반응형
순수 Java 구성을 사용하는 Spring 3.2 @value 주석은 작동하지 않지만 Environment.getProperty는 작동합니다.
이번 일로 머리가 깨졌어요.내가 무엇을 놓쳤는지 확실하지 않습니다.다음을 가져올 수 없습니다.@Value
순수한 Java 구성 스프링 앱(웹이 아님)에서 작동할 주석
@Configuration
@PropertySource("classpath:app.properties")
public class Config {
@Value("${my.prop}")
String name;
@Autowired
Environment env;
@Bean(name = "myBean", initMethod = "print")
public MyBean getMyBean(){
MyBean myBean = new MyBean();
myBean.setName(name);
System.out.println(env.getProperty("my.prop"));
return myBean;
}
}
속성 파일에 다음이 포함됩니다.my.prop=avalue
콩은 다음과 같습니다.
public class MyBean {
String name;
public void print() {
System.out.println("Name: " + name);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
환경 변수는 값을 올바르게 인쇄합니다.@Value
하지 않다.
avalue
Name: ${my.prop}
기본 클래스는 컨텍스트를 초기화합니다.
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(Config.class);
하지만 만약 내가 사용한다면
@ImportResource("classpath:property-config.xml")
이 토막글로
<context:property-placeholder location="app.properties" />
그러면 잘 작동합니다.물론 지금은 환경이 돌아옵니다.null
.
다음 빈 선언을 추가합니다.Config
학급
@Bean
public static PropertySourcesPlaceholderConfigurer propertyPlaceholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
의 순서로@Value
작업할 주석PropertySourcesPlaceholderConfigurer
등록해야 합니다.사용 시 자동으로 수행됩니다.<context:property-placeholder>
XML로, 그러나 등록되어야 합니다.static @Bean
사용 시@Configuration
.
@PropertySource 설명서와 이번 Spring Framework Jira 문제를 참조하십시오.
언급URL : https://stackoverflow.com/questions/17097521/spring-3-2-value-annotation-with-pure-java-configuration-does-not-work-but-env
반응형
'bestsource' 카테고리의 다른 글
MySQL의 COUNT CASE 및 WHEN 문 (0) | 2023.08.22 |
---|---|
Excel에서 첫 번째 문자를 소문자로 만드는 방법 (0) | 2023.08.22 |
프로그램을 실행한 후 손상된 경우 Windows PowerShell 색상을 재설정하는 방법은 무엇입니까? (0) | 2023.08.22 |
자동 배선 실패:관리되지 않는 유형 (0) | 2023.08.22 |
SQL Server에서 데이터를 두 테이블에 동시에 삽입하려면 어떻게 해야 합니까? (0) | 2023.08.22 |