以下是InitializingBean的接口定义:
package org.springframework.beans.factory;
public interface InitializingBean {
void afterPropertiesSet() throws Exception;
}
InitializingBean接口为bean提供了初始化方法的方式,它只包括afterPropertiesSet方法,凡是继承该接口的类,在初始化bean的时候都会执行该方法。
但这不是本文要讲的内容,本文要讲的是这个接口的一个应用。
- 服务工厂提供注册与获取具体服务方法
public class AnalysisDataFactory { private static Map<DataEnum, AbstractDataService> strategyMap = Maps.newHashMap(); public static AbstractDataService getInvokeStrategy(DataEnum dataEnum) { return strategyMap.get(dataEnum); } public static void register(DataEnum dataEnum, AbstractDataService handler) { if (dataEnum==null || null == handler) { return; } strategyMap.put(dataEnum, handler); } }
- 抽象类实现
InitializingBean
接口public abstract class AbstractDataService implements InitializingBean
- 具体类继承抽象类,重写
afterPropertiesSet()
将自己注册到服务工厂@Override public void afterPropertiesSet() throws Exception { AnalysisDataFactory.register(DataEnum.DATA_A, this); }