Servlet 3.0부터 @WebListener라는 annotation이 포함되었고, 이를 통해서 web.xml에 등록 안하고 Annotation만 달아서 등록할 수 있다.
=> Tomcat 7.0.x부터 Servlet 3.0 지원
=> Java version 6, Java EE 6
=> Spring 4.0부터 Java EE 6~7을 완벽히 지원. Spring 4.0이 Servlet 2.5에서도 동작은 하지만 3.0+을 쓸것을 강력히 권고함.
물론 ServletContextListener 등등의 상속을 받은 클래스만 이 annotation이 정상 동작한다.
기존에는 이걸 매번 xml에 넣어야하는 불편함 때문에
ServletContextListener 클래스 상속받은 하나만 등록해두고
뭔가 백그라운드에서 돌아야 할 기능이 있을 경우 만들어둔 ServletContextListener에 추가하는 방식을 썼다.
아니면 @PostConstructor를 이용해서 스프링 프레임워크 준비가 끝나면 실행시키거나..
문제는 첫번째 방법을 쓰려면 매번 ServletContextListener에 등록하는게 번거롭고
(근데 생각해보니까 @PostConstructor를 쓰는것보단 여기 등록해 쓰는게 맞는 말 같다..;;..)
@PostConstructor를 이용할 경우 test case 수행할때마다 같이 시작된다는 문제점이 있다.
@WebListener를 이용하게 되면
ServletContextListener 구현 클래스가 많아진다는 번거로움은 있지만,
xml을 손보거나 특정 class에 줄줄이 달아놓을 필요도 없어지고 => 종속성 줄어들고 self describe 해짐.
test case 실행할때는 동작 안하다가 톰켓에 올라가면 동작....하겠지?...
흠...
테스트 안해봤는데 @WebListener가 spring JUnitRunner에서도 수행된다면 대략 낭패..;;
'SW-PRODUCT > 개발-웹닭·HTTP' 카테고리의 다른 글
[링크] 챠트 라이브러리 chartist (0) | 2015.03.06 |
---|---|
Spring 랜덤값 초기화 (0) | 2015.02.13 |
Spring validation - 2. @RequestBody (0) | 2014.12.24 |
Spring validation - @ResponseBody (0) | 2014.12.23 |
Cookie.HttpOnly (0) | 2014.11.15 |