@PostConstruct
init() -> service -> destroy() <- 서블릿 생성 및 종료
@PreDestroy
init(): 서블릿이 생성 된다.
service: 서블릿의 일을 하고, 구현한 것을 이용해서 여러가지 기능을 한다.
destroy(): 일을 마치고, 컨테이너에서 소멸된다.
위 세 단계가 서블릿의 새애성 및 종료이다.
그전의 PostConstruct는 서블릿이 시작 전 준비를 하는 단계이고, PreDestroy는 디스트로이 이후 정리를 하는 때이다.
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.getWriter().append("Served at: ").append(request.getContextPath());
response.setContentType("text/html; charset=UTF-8");
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
@Override
public void destroy() {
// TODO Auto-generated method stub
super.destroy();
}
@Override
public void init() throws ServletException {
// TODO Auto-generated method stub
super.init();
}
@PreDestroy
public void preDestroy() {
// 함수명이 꼭 이것일 필요는 없고 위에 어노테이션만 맞춰주면 됨
}
@PostConstruct
public void postConstruct() {
}
단계별로 다양한 콜백 메소드들을 제공하고 있다.
보통 기능은 서비스보다 doGet에서 많이 구현한다.
종료될 때는 destroy를 override해서 기술한다.
생성되는 시점에 어떤 것을 하고 싶다 하면 init 단계. 공통적으로 항상 이루어지는 것을 여기서 많이 함
디비 사용후 자원해제를 하거나, 웹서버 리소스를 쓰고 반납할 때 디스트로이 단계
이러한 메소드들은 웹컨테이너가 적절한 때에 호출해 준다.