直接上代码
/* @author wangchaofan @DESCRIPTION ${DESCRIPTION} @create 2019/3/28 */ @Configuration public class BuildOnlineConfig implements InitializingBean {
@Value("${buildonline.litemind.url}") private String url; @Value("${fusion.server.address}") private String fusionAddress; @Value("${fusion.server.port}") private int fusionPort; @Value("${fusion.server.timeout}") private int fusionTimeout; @Value("${fusion.server.isDistribute}") private boolean isDistribute; @Value("${fusion.server.rpcPort}") private int rpcPort; @Value("${fusion.server.restPort}") private int restPort;
public String getUrl() { return url; }
@Override public void afterPropertiesSet() throws Exception { FusionClient.INSTANCE.initialize(fusionAddress, isDistribute, "pyc-cetus-fusion", fusionPort, fusionTimeout, restPort, rpcPort); } } |
解释:
1、实现InitializingBean类重写after方法
InitializingBean接口为bean提供了初始化方法的方式,它只包括afterPropertiesSet方法,凡是继承该接口的类,在初始化bean的时候都会执行该方法。
从结果可以看出,在Spring初始化bean的时候,如果该bean实现了InitializingBean接口,并且同时在配置文件中指定了init-method,系统则是先调用afterPropertieSet()方法,然后再调用init-method中指定的方法。
2、#和$ 区别
$是从properties中获得
#是从bean中获得