티스토리 뷰
Spring framework 에서 @PostConstruct @PreDestroy 같은 Annotation 을 많이 사용할 것이다.
Java 9 이상부터는 찾을 수 없다는 오류가 뜬다.
(The import javax.annotation.PostConstruct cannot be resolved)
패키지만 보면 알겠지만, 사실 이 Annotation 은 Spring의 일부가 아니다.
JSR-250 스팩으로 이를 구현한 Framework 및 Library 에서 동작이 가능하다.
(JSR-250 스팩 : https://en.wikipedia.org/wiki/JSR_250 )
잘 사용하던 Annotation이 안되는 이유는,
이것이 JavaEE Module 인 java.xml.ws.annotation 의 일부인데.
java.xml.ws.annotation 가 Java 9부터 Deprecated 되었다.
이를 해결할 수 있는 방법은 여러가지 인데, 두가지만 적는다.
1. 종속성 추가
코드수정없이 제일 간단하다.
JSR-250 Common Annotations은 그대로 존재하기에. javax.annotations 종속성만 추가해주면 된다.
Maven
<!-- https://mvnrepository.com/artifact/javax.annotation/javax.annotation-api --> <dependency> <groupId>javax.annotation</groupId> <artifactId>javax.annotation-api</artifactId> <version>1.3.2</version> </dependency>
// https://mvnrepository.com/artifact/javax.annotation/javax.annotation-api compile group: 'javax.annotation', name: 'javax.annotation-api', version: '1.3.2'
URL (https://mvnrepository.com/artifact/javax.annotation/javax.annotation-api)
2. Spring bean interface 사용
Spring framework 의 경우 InitializingBean, DisposableBean 을 구현하여 @PostConstruct @PreDestroy 대체가 가능하다.
단점이라면 관련코드를 모두 수정해줘야한다. 그냥 1번하자.
import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.InitializingBean; @Component public class TestComponent implements InitializingBean, DisposableBean{ @Override public void afterPropertiesSet() throws Exception { // @PostConstruct 대응 } @Override public void destroy() throws Exception { // @PreDestroy 대응 } }
[작성] devbible.tistory.com
'Development' 카테고리의 다른 글
[WPF] Windows 공용 컨트롤 및 대화 상자의 테마 사용 (0) | 2019.07.06 |
---|---|
[VisualStudio] Nuget 패키지소스 URL (2) | 2019.03.25 |
[WinMerge] 인코딩 오류로 정보 손실 (0) | 2018.10.04 |
[VisualStudio] ipch , sdf , db 위치 변경 (1) | 2018.09.27 |
[Linux] 비밀번호 입력없이 sudo 쓰기 (Sudo command without password) (0) | 2018.09.12 |
- Total
- Today
- Yesterday