본문 바로가기

Spring

Annotation(어노테이션) JSR-250 어노테이션

인터넷 강의를 듣고 공부한 내용을 포스팅합니다.

'윤재성의 스프링 프레임워크 개발자를 위한 실습을 통한 입문 과정' 이란 강의를 듣고 있습니다.

 

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;
}

다음과 같이 가능합니다.

 

끝!!