@PostConstruct、Listener、File、Interceptor的执行顺序

Listener(在依赖注入之前 ):

在Servlet API中有一个ServletContextListener接口,它能够监听ServletContext对象的生命周期,实际上就是监听Web应用的生命周期。

当Servlet容器启动或终止Web应用时,会触发ServletContextEvent事件,该事件由 ServletContextListener 来处理。在 ServletContextListener 接口中定义了处理ServletContextEvent事件的两个方法。

contextInitialized(ServletContextEvent sce):当Servlet容器启动Web应用时调用该方法。在调用完该方法之后,容器再对Filter初始化,并且对那些在Web应用启动时就需要被初始化的Servlet进行初始化。

contextDestroyed(ServletContextEvent sce):当Servlet容器终止Web应用时调用该方法。在调用该方法之前,容器会先销毁所有的Servlet和Filter过滤器。

web.xml

<listener>  
    <listener-class>com.gjxx.system.utils.ContextListener</listener-class>  
</listener>

ContextListener.java

public class ContextListener implements ServletContextListener{  
    public void contextInitialized(ServletContextEvent sce) {  
        System.out.println("1111111111111111111");  
    }  
    public void contextDestroyed(ServletContextEvent sce) {  
        System.out.println("22222222222222222222222");  
    }  
}

@PostConstruct(在依赖注入之后,更适合调用数据库放入redis中)

spring.xml

<context:component-scan base-package="com.gjxx.system.controller,com.gjxx.system.utils" />  

LoginServiceImpl.java

@Component  
public class LoginServiceImpl{  
    @Autowired  
    private RedisTemplate<String, String> redisTemplate;  
      
    @PostConstruct  
    public void readProperties() {  
        System.out.println("这里要读属性了");  
        Map<String, String> map = (Map<String, String>) redisTemplate.opsForHash().get("aaa", "bb");  
    }  
}
原文地址:https://www.cnblogs.com/yifanSJ/p/9220997.html