이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 16470|회답: 0

[출처] Java annotations@PostConstruct과 자세한 설명 및 예시@PreDestroy

[링크 복사]
게시됨 2019. 4. 4. 오후 4:21:12 | | | |
간략한 소개

Java EE5는 서블릿 수명주기에 작용하는 두 가지 주석인 @PostConstruct와 @PreDestroy을 도입하여, 빈이 초기화되기 전과 소기화되기 전에 맞춤형 연산을 가능하게 합니다. 이 글은 주로 @PostConstruct을 설명합니다.

API 사용 지침

다음은 @PostConstruct API 사용에 대한 지침입니다:

PostConstruct 주석은 의존성 주입이 완료된 후 초기화를 수행하기 위해 실행되어야 하는 메서드에 사용됩니다. 이 메서드는 클래스를 서비스에 넣기 전에 반드시 호출되어야 합니다. 의존성 주입을 지원하는 모든 클래스는 이 주석을 반드시 지원해야 합니다. 클래스가 리소스 주입을 요청하지 않더라도, PostConstruct로 주석이 달린 메서드는 반드시 호출되어야 합니다. 이 주석으로 주석을 달 수 있는 방법은 단 하나뿐입니다. PostConstruct 주석을 적용하는 방법은 다음 모든 기준을 준수해야 합니다: EJB 인터셉터의 경우(EJB 명세에 정의된 경우, InvocationContext 객체를 포함하면서) 메서드는 매개변수를 가져서는 안 됩니다; 메서드의 반환 타입은 반드시 공무이여야 합니다; 메서드는 체크된 예외를 던져서는 안 되며; PostConstruct 적용 방법은 공개, 보호, 패키지 프라이비, 프라이빗 등 다양할 수 있습니다; 메서드는 애플리케이션 클라이언트를 제외하고는 정적일 수 없습니다; 이 방법은 최종적일 수 있습니다; 메서드가 체크되지 않은 예외를 던지면, 예외를 처리하고 복구할 수 있는 EJB가 아닌 한 클래스를 서비스에 배치해서는 안 됩니다.
요약하면 다음과 같습니다:

  • 이 주석으로 주석을 달 수 있는 방법은 단 하나뿐입니다;
  • 주석이 달린 메서드는 어떤 매개변수도 가져서는 안 되며;
  • 주석이 달린 메서드는 void의 값을 반환합니다;
  • 주석이 달린 메서드는 체크된 예외를 던져서는 안 되며;
  • 주석이 달린 방법은 반드시 비정적 방법이어야 하며;
  • 이 방법은 한 번만 수행됩니다;


서블렛 실행 흐름도

두 개의 주석을 추가하면 서블렛은 흐름도를 실행할 수 있습니다:



특정 빈의 인스턴스화 과정 동안, 주석이 달린 메서드 @PostConstruct은 구성 메서드 이후, init 메서드 전에 호출됩니다.

예시

Spring Boot를 기반으로 작성된 실행 메서드는 github에서 확인할 수 있습니다:https://github.com/HappySecondBrother/example

UserService 메서드 (캐시 데이터 제공):

BusinessService 메서드, UserService를 호출하는 @PostConstruct:

실행 결과:

프로젝트 적용

project@PostConstruct 주요 응용 시나리오는 서블렛을 초기화할 때 캐시 데이터를 로드하는 것입니다.

노트:

이 주석을 사용하면 서비스 시작 시간에 영향을 미칩니다. 서버는 시작 시 WEB-INF/클래스의 모든 파일과 WEB-INF/lib 내의 모든 jar 패키지를 스캔합니다.





이전의:리스너에 @Autowired를 주입할 수 없음
다음:고성능 MySQL 3판 중국어 PDF
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com