FactoryBean
Spring3.0开发,FactoryBean开始支持泛型,接口声明改为FactoryBean的形式。
T getObject() throws Exception;
Class<?> getObjectType();
boolean isSingleton();
- 返回由FactoryBean创建的Bean实例。如果isSingleton()返回true,则该实例会放到Spring容器的单实例缓存池中。
- 确认由FactoryBean创建的Bean的作用域是Singleton还是prototye
- 返回FactoryBean创建Bean的类型
有FactoryBean的好处:
一般情况下,Spring通过反射机制利用<bean>属性的class属性执行实现类实例化Bean。在某些情况下,实例化Bean的过程比较复杂,配置方法的灵活性受限制。这是Spring为此提供了一个FactoryBean工程类接口,用户可以通过实现该工厂类接口定制实例化Bean逻辑。
InitializingBean
实现InitializingBean接口的作用
afterPropertiesSet 和init-method之间的执行顺序是afterPropertiesSet 先执行,init-method 后执行。从BeanPostProcessor的作用,可以看出最先执行的是postProcessBeforeInitialization,然后是afterPropertiesSet,然后是init-method,然后是postProcessAfterInitialization
初始化JedisCluster Bean



private static JedisCluster jedisCluster = ((JedisCluster)SpringContextHolder.getBean("jedisCluster"));
好处
- 完成Jedis初始化时有端口的校验逻辑
- 利用了Spring天然的单例模式Singleton,在容器启动的时候实例化Singleton的Bean
本文介绍了Spring中的FactoryBean接口及其泛型支持,详细讲解了如何使用FactoryBean初始化JedisCluster Bean,包括其在Spring容器中的作用域管理。同时,文章探讨了InitializingBean接口,说明了afterPropertiesSet和init-method的执行顺序。通过实现这些接口,可以自定义复杂Bean的实例化逻辑,并确保JedisCluster在初始化时进行端口校验,利用Spring的Singleton模式实现单例。
470

被折叠的 条评论
为什么被折叠?



