[SPRING] Spring & annotation을 사용하여 속성 주입 @Value
SPRINGSpring & annotation을 사용하여 속성 주입 @Value
Spring 빈에 프로퍼티 파일을로드하고 그 빈을 클래스에 삽입하려고합니다.
내가 일할 수없는 유일한 부분은 @ 리소스 참조를 사용하는 것 같습니다. 누군가 나에게 마지막 부분을 연결할 수 있습니까? 나는 매번 null 값을 얻는다. 값을 주입하고 싶지 않은 것 같습니다.
[편집] - 원래 @ Resource를 사용하는 것이 가장 좋은 방법이라고 생각했지만 제안 된 솔루션은 더 쉽게 발견되었습니다.
다른 게시물에서이 솔루션을 보았습니다.
참조 솔루션 링크 : 스프링에 속성 값 삽입 - DON 게시
게시물에 대한 돈을 신용하지만 난 그냥 @ Resource로 마무리하는 방법을 모르겠다.
디버깅 결과 : 변수 값 appProperties는 항상 null입니다. 그것은 주입되지 않습니다.
스프링 구성.
샘플 수업 :
package test;
import java.util.Properties;
import javax.annotation.Resource;
public class foo {
public foo() {}
@Resource private java.util.Properties appProperties;
}
아래 승인 된 솔루션의 조언을 기반으로합니다. 여기에 제가 변경 한 사항이 있습니다.
스프링 구성 :
Java 클래스 :
해결법
-
==============================
1.솔루션을 작동 시키려면 foo를 스프링 관리 빈으로 만들어야한다. 그렇지 않다면 스프링은 클래스의 주석을 처리해야한다는 것을 어떻게 알 수 있을까요?
솔루션을 작동 시키려면 foo를 스프링 관리 빈으로 만들어야한다. 그렇지 않다면 스프링은 클래스의 주석을 처리해야한다는 것을 어떻게 알 수 있을까요?
필자는 이것이 정확히 원하는 것인지 확신 할 수 없기 때문에 (.properties 파일을 Spring에서 구문 분석하고 Properties 객체 대신 사용할 수있는 키 - 값 쌍을 사용하지 않으시겠습니까?), 저는 여러분에게 솔루션 : util 네임 스페이스 사용
<util:properties id="props" location="classpath:com/foo/bar/props.properties"/>
빈 내부의 값을 참조하십시오 (또한 스프링 관리가 필요함).
@Value("#{props.foo}") public void setFoo(String foo) { this.foo = foo; }
편집하다:
클래스에서 org.springframework.context.ApplicationContext를 가져 오는 것이 아마도 불필요한 것임을 깨달았습니다. a) 좋은 읽을 거리이기 때문에 b) 적어도 기본 장을 분명히 읽으시기 바랍니다. b) 기초가 명확하다면 Spring을 이해하는 것이 훨씬 쉽습니다.
-
==============================
2.속성 자리 표시자를 사용하는 솔루션이 하나 더 있습니다.
속성 자리 표시자를 사용하는 솔루션이 하나 더 있습니다.
봄 문맥 :
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd"> <context:component-scan base-package="your.packege" /> <context:property-placeholder location="classpath*:*.properties"/> </beans>
속성 값을 주입 할 Java 클래스 :
public class ClassWithInjectedProperty { @Value("${props.foo}") private String foo; }
from https://stackoverflow.com/questions/6425795/injecting-properties-using-spring-annotation-value by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring RestTemplate이 XmlConverter를 사용하도록 강제 실행 (0) | 2019.02.05 |
---|---|
[SPRING] Spring 3 주석 - HibernateDaoSupport - 저장소가 세션 팩토리를 필요로 함 (0) | 2019.02.05 |
[SPRING] JSTL을 사용하여 jsp 내부의 목록 요소를 얻는 방법? (0) | 2019.02.05 |
[SPRING] Spring / JPA / Mysql / Tomcat 앱에서 Connection Closed Exception 분석하기 (0) | 2019.02.05 |
[SPRING] 스프링 MVC를 사용하여 jsp에서 모델 속성을 표시하는 방법은 무엇입니까? (0) | 2019.02.05 |