[Spring] 필수 프로퍼티 @Required 어노테이션
어노테이션 개별 적용 태그
어노테이션의 개별 적용을 위해
시작-끝 태그나 단독 태그로 선언한다.
클래스에 정의된 특정 어노테이션 등을 인식하도록 스프링에 선언한다.
빈 생성, 서비스 계층에 대한 트랜잭션 관리 등을 할 수 있게 된다.
등록된 비에서 어노테이션을 활성화 할 때 사용한다.
@Required 어노테이션
@Required 어노테이션은 필수 프로퍼티를 알리거나 명시한다.
setter 메서드에서 반드시 주입해야하는 프로퍼티를 설정한다. setter메서드에 적용하면 프로퍼티에 값이 반드시 주입되어야 하는덧을 컨테이너에 알려주는것이고, 단독으로 설명하면 필수 프로퍼티로 인식하는 것이라기 보다는 명시적인 역할을 한다.
필수프로퍼티 주입
제한적으로 사용되며 주로 의존성 주입과 관련된 어노테이션을 활성화 하는데 사용된다.
명시적인 역할을 하며 필수적으로 주입해야하는 프로퍼티를 표시한다.
프로퍼티가 반드시 주입되어야 함을 표현할 수 있다.
public class RequiredDTO {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "RequiredDTO [name=" + name + ", age=" + age + "]";
}
}
import org.springframework.beans.factory.annotation.Required;
public class RequiredService {
private RequiredDTO requiredDTO;
public RequiredDTO getRequiredDTO() {
return requiredDTO;
}
// 필수 프로퍼티를 명시한다.
@Required
// 프로퍼티를 주입하고 set을 제외한 첫 글자가 소문자인 requiredDTO가 빈이 된다.
public void setRequiredDTO(RequiredDTO requiredDTO) {
this.requiredDTO = requiredDTO;
}
}
Bean.xml
<!-- RequiredDTO -->
<context:annotation-config />
<bean class="min.spring.required.RequiredDTO" id="requiredDTO">
<property name="name" value="홍길동" />
<property name="age" value="22" />
</bean>
<bean class="min.spring.required.RequiredService" id="requiredService" autowire="byName"/>
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;
public class RequiredCall {
private static final Logger logger = LoggerFactory.getLogger(RequiredCall.class);
public static void main(String[] args) {
ApplicationContext applicationContext = new GenericXmlApplicationContext("bean/Bean.xml");
logger.info("정보", applicationContext);
RequiredService requiredService = (RequiredService) applicationContext.getBean("requiredService");
System.out.println(requiredService.getRequiredDTO());
}
}
댓글남기기