initPropertySource()方法具有什么功能呢?
转自:
http://www.java265.com/JavaFramework/Spring/202207/3975.html
下文笔者讲述initPropertySource()方法的功能简介说明,如下所示
initPropertySource()方法简介
initPropertySource()方法简介: 主要用于Environment后 为系统提供良好的扩展
initPropertySource()方法启动点
public ClassPathXmlApplicationContext(String[] configLocations, boolean refresh, ApplicationContext parent) throws BeansException{ super(parent); setConfigLocationins(configurations); if(refresh){ refresh(); } } refresh()中的第一个方法prepareRefresh() 调用initPropertySources()方法 protected void prepareRefresh(){ initPropertySources(); } 从以上的源码中 我们得知prepareRefresh()中 initPropertySources()方法并没有任何参数 当进入initPropertySources()方法内部,也会发现该方法是空的,没有任何逻辑。 Spring采用此种方式设计的目的 为了让用户根据自己的需要 重写initPropertySources()方法 并在其中实现自己的逻辑
例
定义项目启动时,必须拥有属性 fileCodingType 那么我们就可以通过扩展initPropertySources()方法的方式 使系统必须拥有此属性 public class MyClassPathXmlApplicationContext extends ClassPathXmlApplicationContext{ protected void initPropertySources(){ //添加验证要求 getEnvironment().setRequiredProperties("fileCodingType"); } }