인터넷 강의를 듣고 공부한 내용을 포스팅합니다.
'윤재성의 스프링 프레임워크 개발자를 위한 실습을 통한 입문 과정' 이란 강의를 듣고 있습니다.
JSR-250 어노테이션
스프링에서 사용하려고 개발 된 것은 아니고 자바 플랫폼에서 사용하려고 개발 되었던 것을 스프링에서도 지원합니다.
스프링에서 기본으로 제공되지는 않지만 자바 플랫폼 공통 어노테이션인 JSR-250을 적용할 수 있습니다.
긁어서 pom.xml에 추가
@postConstrict
생성자 호출 후 자동으로 호출 될 함수를 등록합니다.
@preDestroy
객체 소멸 전 자동으로 호출 될 함수를 등록합니다.
@Resource
bean의 이름을 통해 주입합니다 @Autowired와 @Qualifier를 합친 것과 비슷합니다.
실습
전에는 빈객체를 생성할 때
@Bean(initMethod="init1", destroyMethod="destroy1")
@Lazy
public TestBean1 obj1() {
return new TestBean1();
}
이런식으로 @Configuration 선언했었는데
public TestBean2() {
System.out.println("TestBean2의 생성자");
}
@PostConstruct
public void init2() {
System.out.println("TestBean2의 init메서드");
}
@PreDestroy
public void destroy2() {
System.out.println("TestBean2의 destroy메서드");
}
JSR-250에 있는 @postConstruct 와 @preDestroy 를 사용하면 클래스에 직접 선언가능합니다.
주입할 때 보면
@Autowired
@Qualifier("data1")
private DataBean1 data1;
@Autowired
@Qualifier("data2")
private DataBean2 data2;
public DataBean1 getData1() {
return data1;
}
public DataBean2 getData2() {
return data2;
}
//변수의 이름과 동일한 이름의 bean이 주입된다.
@Resource
private DataBean1 data1;
@Resource
private DataBean2 data2;
public DataBean1 getData1() {
return data1;
}
public DataBean2 getData2() {
return data2;
}
이런식으로 바꿔줄 수 있습니다. 이름을 정해줄 수도 있습니다.
@Resource(name="data1")
private DataBean1 data100;
@Resource(name="data2")
private DataBean2 data200;
public DataBean1 getData100() {
return data100;
}
public DataBean2 getData200() {
return data200;
}
다음과 같이 가능합니다.
끝!!
'Spring' 카테고리의 다른 글
Annotation(어노테이션)을 이용한 빈 설정 (0) | 2021.07.23 |
---|---|
Annotation(어노테이션) 주입 (0) | 2021.07.21 |
Annotation(어노테이션) 자바 코드를 이용한 bean 등록 (0) | 2021.07.19 |
DI(Dependency Injection) 자동주입 (0) | 2021.07.18 |
DI(Dependency Injection) Setter메서드를 통한 주입 (0) | 2021.07.17 |