애노테이션 @PostConstruct, @PreDestory

애노테이션으로 적용하는 방법인데 결론적으로 이 방법을 사용하면 됩니다. 스프링에서도 이 방법을 권고하고 있습니다.

애노테이션 이름만 봐도 명확합니다. (생성된 후에, 소멸되기 전에)

바로 코드로 봅시다.

package hello.core.lifecycle;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

public class NetworkClient {

    private String url;

    public NetworkClient() {
        System.out.println("생성자 호출, url = " + url);
    }

    public void setUrl (String url) {
        this.url = url;
    }

    //서비스 시작시 호출
    public void connect() {
        System.out.println("connect: " + url);
    }

    public void call(String message) {
        System.out.println("call: " + url + " message" + message);
    }

    //서비스 종료시 호출
    public void disconnect() {
        System.out.println("close: " + url);
    }

    @PostConstruct
    public void init() {
        System.out.println("NetworkClient.init");
        connect();
        call("초기화 연결 메세지");
    }

    @PreDestroy
    public void close() {
        System.out.println("NetworkClient.close");
        disconnect();
    }
}

@PostConstruct, @PreDestory를 붙여주면 끝입니다.

실행을 해봅시다.

Untitled

동일하게 동작함을 알 수 있습니다.

<aside> ❗ 여기선 패키지가 중요합니다.

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

javax로 되어있으면 자바 진영에서 공식적으로 지원하는 것 입니다. 스프링이 아니라 다른 컨테이너를 써도 그대로 적용이 됩니다.

</aside>

@PostConstruct, @PreDestroy 애노테이션 특징