2013-04-16 5 views
2

이 기본 질문을 다루십시오.@Component로 속성 이름/값을 지정하십시오.

속성 (클래스 변수)에 해당 클래스의 키/값 형식을 사용하여 값을 지정할 수있는 @Autowired 주석을 사용했습니다.

<bean id="class" class="a.b.c.Class" lazy-init="true"> 
     <property name="var1" value="${var1}" /> 
</bean> 

클래스를 autoconfigure가 필요없는 구성 요소 검사 옵션으로 @Component로 변경했습니다. 이제 어떻게 속성 변수를 추가 할 수 있습니까?

또한 Junits를 쓰는 동안 문제가되고 싶지 않습니다.

덕분에,

답변

4

속성 파일에서이 특성을 생각하는 경우 @PropertySource@Value 주석을 확인하십시오.

@Component 
@PropertySource("classpath:myProps.properties") 
public class MyComponent { 

    @Value("${some.property}") 
    private String valueFromProperty; 

    // You can also use environment 
    @Autowired 
    private Environment env; 

    public void someMethod() { 
     String prop = env.getProperty("some.property"); 
     MyBean bean = new MyBean(); 
     bean.setProp(prop); 
     return bean; 
    } 
} 
+0

무엇을 의미합니까? 단위 테스트에 대해 이야기하고 있다면 Spring을 사용하여 내 의존성을 해결하지 말고 단지 "hand wire"를 사용하는 것을 선호합니다. 그러나 Spring 테스트 주자와 올바른 컨텍스트 구성을 사용한다면 제대로 작동합니다. – NilsH

+0

코멘트를 삭제하는 것에 대한 죄송합니다. 우리는 Autowired 대상과 마찬가지로 Value annotation을 직접 삽입 할 수 있습니까? – instanceOfObject

+0

빈이 생성 될 때'@ Value'가 주입되어야합니다. 그래서 대답이 '예'라고 가정합니다. – NilsH

0

기준 (Chapter 4. IoC container) 봄의 @Value 주석에서보세요.

속성은로드해야합니다

<beans> 
    <context:property-placeholder location="classpath:/com/acme/your.properties"/> 
</beans> 
관련 문제