spring利用lookup-method标签单例bean中注入多例bean

1、单例bean A声明为抽象类,并编写抽象方法。如下:

protected abstract B createB();

2、在配置文件中配置如下:

<bean id="a" class="A">

<lookup-method name="createB" bean="b"/>

</bean>

<bean id="b" class="B"/>

3、在A中使用B,代码如下:

B b = this. createB();

时间: 2024-10-21 03:02:23

spring利用lookup-method标签单例bean中注入多例bean的相关文章

Spring单例Bean中注入多例Bean

问题: 当在一个单例Bean中注入一个多例Bean的时候,是获取不到那个多例对象的,因为,单例在初始化的时候,就直接初始化,这个多例Bean啦, 一直获取的是第一次初始化的Bean 配置文件: <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"    xmlns:xsi="htt

Spring IOC容器中注入bean

一.基于schema格式的注入 1.基本的注入方式 (属性注入方式) 根据setXxx()方法进行依赖注入,Spring只会检查是否有setter方法,是否有对应的属性不做要求 <bean id="student" class="com.lq.ioc.Student"> <property name="name" value="zhansan"></property> <propert

&lt;bean abstract=&quot;true&quot;&gt; 即该bean不能被实例化

第一步:新建项目  SecondSpring 文件目录结构如下: 第二步:导入spring相对应的jar包 过程略... 第三步: 新建类 TestAbstract.java package com.xuzhiwen.spring8; public class TestAbstract { public String name; public void setName(String name) { this.name = name; } @Override public String toStr

Bean的注入

Bean有两种注入方法:一是构造方法注入,使用<constructor-arg>,有几个参数,就注入几个.构造方法的优点: 使用强依赖契约. 依赖都通过构造函数设置了,减少使用set方法的代码. 只能通过构造函数设置类的属性,保证了属性的不可变性. 构造方法的缺点: 当Bean需要很多依赖时,构造函数的参数列表太长. 当一个对象已经有很多种构造方法,很难再提出不同的构造函数. 构造函数中有两个以上是想同类型的,很难确定每个参数的用途. 构造方法不利于自身的继承. 二是使用set方法注入,使用&

Spring源码分析(十三)缓存中获取单例bean

摘要:本文结合<Spring源码深度解析>来分析Spring 5.0.6版本的源代码.若有描述错误之处,欢迎指正. 介绍过FactoryBean的用法后,我们就可以了解bean加载的过程了.前面已经提到过,单 例在Spring的同一个容器内只会被创建一次,后续再获取bean直接从单例缓存中获取,当然这里也只是尝试加载,首先尝试从缓存中加载,然后再尝试从singletonFactories中加载. 因为在创建单例bean的时候会存在依赖注人的情况,而在创建依赖的时候为了避免循环依赖, Sprin

spring自动注入是单例还是多例?单例如何注入多例?

单例多例需要搞明白这些问题:      1. 什么是单例多例:      2. 如何产生单例多例:      3. 为什么要用单例多例      4. 什么时候用单例,什么时候用多例:   1. 什么是单例.多例: 所谓单例就是所有的请求都用一个对象来处理,比如我们常用的service和dao层的对象通常都是单例的,而多例则指每个请求用一个新的对象来处理,比如action; 单例模式和多例模式说明: 1. 单例模式和多例模式属于对象模式. 2. 单例模式的对象在整个系统中只有一份,多例模式可以有

spring利用注解来注册bean到容器

1.spring利用注解来定义bean,或者利用注解来注册装配bean.包括注册到ioc中,装配包括成员变量的自动注入. 1.spring会自动扫描所有类的注解,扫描这些注解后,spring会将这些bean注册到ioc容器中.省去了xml文件的书写bean方法. 2.spring会自动扫描这些注解,spring会自动扫描这些注解. 配置<context:component-sacn base-package="xxxx">后,spring就会自动扫描注解.扫描指定包下所有内

spring mvc使用@InitBinder 标签对表单数据绑定

在SpringMVC中,bean中定义了Date,double等类型,如果没有做任何处理的话,日期以及double都无法绑定. 解决的办法就是使用spring mvc提供的@InitBinder标签 在我的项目中是在BaseController中增加方法initBinder,并使用注解@InitBinder标注,那么spring mvc在绑定表单之前,都会先注册这些编辑器,当然你如果不嫌麻烦,你也可以单独的写在你的每一个controller中.剩下的控制器都继承该类.spring自己提供了大量的

spring lookup method 注入

lookup method注入是spring动态改变bean里方法的实现.方法执行返回的对象,使用spring内原有的这类对象替换,通过改变方法返回值来动态改变方法.内部实现为使用cglib方法,重新生成子类,重写配置的方法和返回对象,达到动态改变的效果. 实例如下: package fiona.apple; // no more Spring imports! public abstract class CommandManager { public Object process(Object