1. 程式人生 > >初始化JedisCluster學習Spring FactoryBean的用法

初始化JedisCluster學習Spring FactoryBean的用法

FactoryBean

Spring3.0開發,FactoryBean開始支援泛型,介面宣告改為FactoryBean的形式。

T getObject() throws Exception;
Class<?> getObjectType();
boolean isSingleton();
  1. 返回由FactoryBean建立的Bean例項。如果isSingleton()返回true,則該例項會放到Spring容器的單例項快取池中。
  2. 確認由FactoryBean建立的Bean的作用域是Singleton還是prototye
  3. 返回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"));

好處

  1. 完成Jedis初始化時有埠的校驗邏輯
  2. 利用了Spring天然的單例模式Singleton,在容器啟動的時候例項化Singleton的Bean