Spring中协调作用域不同的Bean
来源:互联网 发布:编程和数学的联系 编辑:程序博客网 时间:2024/05/22 17:40
Spring中singleton作用域的Bean在程序的整个过程中只有因此初始化的机会,当然它的依赖关系也是在初始化阶段就确定下来,但是如果注入的依赖关系是一个prototype类型的Bean,那么该bean注入的时候肯定是“一次性注入”,也就是说prototype类型的bean的将会一直不变,但是这肯定是有违我们在定义scope="prototype"的初衷,那么这时该怎么办呢?"lookup-method"属性将会派上用场。同时还需要将具有依赖关系的bean定义成abstract类型。下面是我自定义的一个简单的类子:
先定义一个Dog接口
package unsynchronizedbean;public interface Dog { public void hunt();}
定义Dog接口的实现:
package unsynchronizedbean;import java.util.Date;public class DogImpl implements Dog { @Override public void hunt() { System.out.println(new Date() + " 此时在奔跑"); }}
这里定义一个Person抽象类:
package unsynchronizedbean;public abstract class Person { public abstract Dog getDog(); public void say(){ System.out.print("现在时间是: "); getDog().hunt(); }}
定义一个测试类:
package unsynchronizedbean;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class App { @Test public void testPerson() throws Exception { ApplicationContext atx = new ClassPathXmlApplicationContext("/unsynchronizedbean/beans.xml"); Person p = atx.getBean("person", Person.class); p.say(); //让该线程睡眠十秒钟,获取p1实例,结果要求p1、p的时间不一致 Thread.sleep(10000); Person p1 = atx.getBean("person", Person.class); p1.say(); }}
在我自己所创建的包下定义的.xml格式文件bean部分的片段如下:
<bean id="dogImpl" class="unsynchronizedbean.DogImpl" scope="prototype"/> <bean id="person" class="unsynchronizedbean.Person"> <lookup-method name="getDog" bean="dogImpl"/> </bean>
协调作用于不同的Bean的关键就是确定Singleton Bean的抽象方法,通过该抽象方法返回一个prototype类型的class,然后在配置文件中通过lookup-method属性为该抽象类提供具体实现,最后这里还要注意一点name属性值必须为抽象方法名。
0 0
- Spring中协调作用域不同的Bean
- 协调作用域不同的Bean
- Spring:协调作用域不同步的Bean
- Spring协调作用域不同步的bean
- 协调作用域不同步的Bean
- 协调作用域不同步的Bean
- 协调作用域不同步的Bean
- 2.5 协调作用域不同步的Bean
- 协调作用域不同步的Bean
- 使用方法注入—协调不同作用域(singleton、prototype)的bean
- spring之注入不同作用域之间的bean
- 7.9.3:协调作用域不同步的Bean
- 详解Spring中bean的作用域
- spring中bean的作用域
- Spring中bean的作用域
- Spring中bean的作用域
- Spring中bean的作用域
- 详解Spring中bean的作用域
- oc基础之NSString的常用方法(四)
- 你所不知的 CSS ::before 和 ::after 伪元素用法
- Html5新标签解释及用法
- 栈
- 浅析HTML5的10大优势
- Spring中协调作用域不同的Bean
- CSS3那些不为人知的高级属性
- ThinkPhp3.2.3完全开发手册(在线版)
- DevExpress BarEditItem ComboBoxEditSettings
- 桶排序
- 【codevs1048】【codevs1154&&06TG】石子归并、能量项链,序列dp的典型题目
- 欢迎使用CSDN-markdown编辑器
- Leetcode NO.249 Group Shifted Strings
- Python集合(set)类型的操作