Spring FactoryBean,InitializingBean使用
来源:互联网 发布:网络超市加盟店排行榜 编辑:程序博客网 时间:2024/05/28 15:17
- public class Student {
- private int id;
- private String name;
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- }
- public class StuFactory implements FactoryBean, InitializingBean {
- public void afterPropertiesSet() throws Exception {
- System.out.println("student class initialized.");
- }
- public Object getObject() throws Exception {
- return new Student();
- }
- public Class getObjectType() {
- return Student.class;
- }
- public boolean isSingleton() {
- return true;
- }
- }
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:lang="http://www.springframework.org/schema/lang"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
- http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-2.5.xsd">
- <bean id="stuFactory" class="com.alibaba.spring.StuFactory">
- </bean>
- </beans>
- public class StuFactoryTest {
- @Test
- public void test1() throws Throwable {
- ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
- Student stuFactory1 = (Student) context.getBean("stuFactory");
- Student stuFactory2 = (Student) context.getBean("stuFactory");
- System.out.println(stuFactory1 == stuFactory2);
- }
- }
- student class initialized.
- true
- public class FactoryBeanDemo implements FactoryBean {
- private String name;
- public void setName(String name) {
- this.name = name;
- }
- public Object getObject() throws Exception {
- if ("date".equals(name))
- return new Date();
- else
- return new String("这是一个字符串!");
- }
- public Class getObjectType() {
- return "date".equals(name) ? Date.class : String.class;
- }
- public boolean isSingleton() {
- return false;
- }
- }
- <bean name="myFactoryBean" class="com.alibaba.spring.FactoryBeanDemo" />
- <bean name="myFactoryBean1" class="com.alibaba.spring.FactoryBeanDemo">
- <property name="name" value="date"></property>
- </bean>
- Resource res = new ClassPathResource("applicationContext.xml");
- BeanFactory factory = new XmlBeanFactory(res);
- System.out.println(factory.getBean("myFactoryBean").getClass());
- System.out.println(factory.getBean("myFactoryBean1").getClass());
- System.out.println("=====================================");
- System.out.println(factory.getBean("&myFactoryBean").getClass());
- System.out.println(factory.getBean("&myFactoryBean1").getClass());
- class java.lang.String
- class java.util.Date
- =====================================
- class com.alibaba.spring.FactoryBeanDemo
- class com.alibaba.spring.FactoryBeanDemo
FactoryBean还藏有一个技巧,也就是在我们实际需要返回FactoryBean实例时,应该怎么办。也就是我们在应用程序中需要通过容器得到一个FactoryBean。此时,需要使用特殊的方式,即在bean的名称前加上一个特殊符号“&”即可。即:System.out.println(factory.getBean("&myFactoryBean").getClass());
coming from http://tianya23.blog.51cto.com/1081650/660273
0 0
- Spring FactoryBean,InitializingBean使用
- FactoryBean,InitializingBean使用
- Spring中ApplicationEvent、ApplicationListener、InitializingBean、FactoryBean
- InitializingBean,FactoryBean详解
- Spring的FactoryBean使用
- Spring FactoryBean接口使用
- 如何使用Spring FactoryBean?
- Spring中InitializingBean接口使用
- 【Spring】使用FactoryBean配置Bean
- spring InitializingBean
- Spring InitializingBean
- Spring中InitializingBean接口使用理解
- Spring中InitializingBean接口使用理解
- spring中InitializingBean接口使用理解
- spring中InitializingBean接口使用理解
- Spring中InitializingBean接口使用理解
- spring中InitializingBean接口使用理解
- spring中InitializingBean接口使用理解
- jsp中路径的问题
- MFC窗口创建以及工具条的浮动
- 矩阵置换@mysql
- 一些新的想法
- C#动态加载树菜单
- Spring FactoryBean,InitializingBean使用
- LeetCode:Reverse Nodes in k-Group
- 要掌握的几个
- mt7681程序下载详解
- 技巧——gson之实体对应的字段取别名
- 网络--- socket读写操作
- mysql半同步复制的实现
- 今日作息及食谱(6.21)
- Linux ARM系统调用实现