1、怎么让一个bean(对spring来说类就是一个bean)在随容器启动的时候就执行?
之前做法:之前我们都是在spring里面定义一个bean,然后用 ClassPathXMLApplicationContext.getBean(“”) 的方式去做,或者在ApplicationContext.xml文件里面采用<bean id="springAutoStart" class="utils.SpringAutoStart" init-method="afterPropertiesSet"/> 方法来做。
现在做法:现在我们可以让需要随容器启动执行的类实现 InitializingBean 或者是 ServletContextAware 接口,然后实现对应的方法
afterPropertiesSet() 或者 setServletContext(ServletContext servletContext),那么在容器启动的时候就会根据
注解扫描到该bean,然后执行 afterPropertiesSet()和 setServletContext(ServletContext servletContext)方法里面的东西。
问题: 如果让一个bean 同时实现 InitializingBean 和 ServletContextAware ,那么afterPropertiesSet()和 setServletContext方法哪一个先执行?
经过测试,setServletContext 方法会先执行,因为setServletContext会获取servlet的应用上下文参数,他会随web.xml执行的时候就执行了,因为web应用的第一入口就是web.xml。