복붙노트

[SPRING] Spring & annotation을 사용하여 속성 주입 @Value

SPRING

Spring & 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. ==============================

    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. ==============================

    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;
    }
    
  3. from https://stackoverflow.com/questions/6425795/injecting-properties-using-spring-annotation-value by cc-by-sa and MIT license