1. 程式人生 > >@PostConstruct、Listener、File、Interceptor的執行順序

@PostConstruct、Listener、File、Interceptor的執行順序

int red tro println pack redis 過濾器 ack 觸發

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");  
    }  
}

@PostConstruct、Listener、File、Interceptor的執行順序