[SPRING] 어노테이션을 사용하여 빈 생성자에 값을 주입하는 방법
SPRING어노테이션을 사용하여 빈 생성자에 값을 주입하는 방법
내 스프링 빈에는 고유 한 필수 인수가있는 생성자가 있으며 XML 구성을 사용하여 초기화 할 수있었습니다.
<bean name="interfaceParameters#ota" class="com.company.core.DefaultInterfaceParameters">
<constructor-arg>
<value>OTA</value>
</constructor-arg>
</bean>
그렇다면이 콩을 이렇게 사용하면 잘 작동합니다.
@Resource(name = "interfaceParameters#ota")
private InterfaceParameters interfaceParameters;
하지만 annocations와 같은 생성자 arg 값을 지정하고 싶습니다.
@Resource(name = "interfaceParameters#ota")
@contructorArg("ota") // I know it doesn't exists!
private InterfaceParameters interfaceParameters;
이것이 가능한가 ?
미리 감사드립니다.
해결법
-
==============================
1.먼저 bean 정의에 생성자 arg를 지정해야하며 주입 지점에는 지정하지 않아야합니다. 그런 다음, 스프링의 @Value 주석 (spring 3.0)
먼저 bean 정의에 생성자 arg를 지정해야하며 주입 지점에는 지정하지 않아야합니다. 그런 다음, 스프링의 @Value 주석 (spring 3.0)
@Component public class DefaultInterfaceParameters { @Inject public DefaultInterfaceParameters(@Value("${some.property}") String value) { // assign to a field. } }
이것은 스프링이 필드 주입보다 생성자 주입을 권고하기 때문에 권장된다.
지금까지 내가 문제를 보았을 때, 이것은 당신에게 어울리지 않을 수도있다. 왜냐하면 당신은 다르게 명명 된 동일한 클래스의 여러 빈을 정의하는 것처럼 보이기 때문이다. 이를 위해서는 주석을 사용할 수 없으므로 주석을 XML로 정의해야합니다.
그러나 나는이 다른 콩을 갖는 것이 좋은 생각이라고 생각하지 않습니다. 문자열 값만 사용하는 것이 좋습니다. 그러나 정확한 정보를 모르기 때문에 더 많은 정보를 제공 할 수는 없습니다.
-
==============================
2.Bozho가 말했듯이, 생성자 arg 대신에 프로퍼티를 설정할 수 있습니다 ... @ PostConstruct는 모든 프로퍼티가 설정되고 나서야 호출됩니다 ... 그래서, 당신은 여전히 당신의 문자열을 사용할 수 있습니다 ...
Bozho가 말했듯이, 생성자 arg 대신에 프로퍼티를 설정할 수 있습니다 ... @ PostConstruct는 모든 프로퍼티가 설정되고 나서야 호출됩니다 ... 그래서, 당신은 여전히 당신의 문자열을 사용할 수 있습니다 ...
from https://stackoverflow.com/questions/4203302/how-to-inject-a-value-to-bean-constructor-using-annotations by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] @ 보안은 컨트롤러에서 작동하지 않지만 요격은 정상적으로 작동하는 것 같습니다. (0) | 2018.12.25 |
---|---|
[SPRING] 발췌 프로젝션이 Spring Data REST 항목 리소스에 자동으로 적용되지 않는 이유는 무엇입니까? (0) | 2018.12.25 |
[SPRING] 봄 부팅 응용 프로그램에서 봄 보안 해제 (0) | 2018.12.25 |
[SPRING] Spring 'HandlerMethodArgumentResolver'에서 요청 본문을 여러 번 읽으려면 어떻게해야합니까? (0) | 2018.12.25 |
[SPRING] MyBatis / Spring을 사용하여 배치 작업을 구현하는 방법은 무엇입니까? (0) | 2018.12.25 |