2016-11-22 5 views
2

@ConfigurationProperties 기능을 사용하는 데 문제가 있습니다. 아마 메커니즘이 매우 단순 해 보이기 때문에 뭔가 빠졌지 만 나에게는 효과가 없습니다.Spring @ConfigurationProperties가 채워지지 않았습니다.

나는 다음과 같은 주요 애플리케이션 클래스와 봄 부팅을 사용하고

QueuesProperties와
@SpringBootApplication 
@EnableAspectJAutoProxy 
@EnableConfigurationProperties(QueuesProperties.class) 
@PropertySource("file:config/queues.properties") 
@ImportResource("classpath:/spring-config.xml") 
public class Application { 
    public static void main(String... args) { 
     ConfigurableApplicationContext ctx = SpringApplication.run(Application.class, args); 
    } 
} 

(I 문제를 분리하려고)
@ConfigurationProperties(prefix = "wmq.in.queue") 
public class QueuesProperties { 
    private static final Logger LOGGER = LoggerFactory.getLogger(QueuesProperties.class); 

    private String descr; 

    public String getDescr() { 
     return descr; 
    } 

    public void setDescr(String descr) { 
     this.descr = descr; 
    } 
} 

특성 파일은 매우 간단

wmq.in.queue.descr = description 

그런 다음 @Componen의 QueuesProperties를 @Autowired하려고합니다. 나는 스프링 통합 흐름에서 a를 사용한다. QueuesProperties가 올바르게 주입되었지만 descr 속성이 null입니다.

@Autowired 
private QueuesProperties queuesConfiguration; 

@Value("${wmq.in.queue.descr}") 
private String descr; 

동안 정확하게 평가한다.

다른 구성이나 코드로 많은 시도를했지만 그 결과는 같습니다. QueuesProperties 빈을 얻지 만 채워지지 않습니다.

무엇이 누락 되었습니까?

답변

0

wmq.in.queue.descr = description 속성이 applciation.properties 파일에 쓰여져 있는지 여부는 확실하지 않습니다. 이 속성이 제대로 @Value으로 평가되고 말 때문에 나는 그것을 말하지

@Autowired 
private QueuesProperties queuesConfiguration; 

심지어 @PropertySource("file:config/queues.properties") 나 아마 당신의 wmq.in.queue.descr = description 속성 applciation.properties이 아니라 파일에 기록되지 않는다는 것을 생각하자와 : 설정 /queues.properties.

당신이 application.properties의 등록 정보를 작성하고 아래와 같이 주석 클래스에 @Component, @Configuration에 @EnableConfigurationProperties(QueuesProperties.class) 등을 사용하게 사용 @ConfigurationProperties 기능에 대한 합산.

@Component 
@EnableConfigurationProperties(QueuesProperties.class) 
public class YourBean { 
.... 

private final QueuesProperties queuesProperties; 

public YourBean(QueuesProperties queuesProperties){ 
    this.queuesProperties = queuesProperties; 
} 


..... 


} 

실제로 당신은 봄 부팅 특성 평가를 커스터마이징 application.properties 파일 이름을 변경할 수 있지만, 해당 지역의 앱 나는 낙담. 난 당신이 내가 당신에게 내가 application.properties 파일이

+0

을 도울 수 있기를 바랍니다

응용 프로그램의 구성 속성을 넣어하는 장소를 이름 지정 application.properties에게 좋은 이름을 고려 (실제로는 2, 하나 classpath의 기본값과 하나는 파일의 재정의 : config/application.properties)와 외부의 속성에서로드하려고 시도했지만 이제는 문제를 격리하려고 시도하고 다른 속성 파일을 추가했습니다. (file : config/queues.properties) 'wmq.in.queue.descr = description' – nex

+0

내 샘플에서와 같이 @EnableConfigurationProperties를 사용하여 구성/구성 요소 클래스에 주석을 추가합니까? –

+0

Application 클래스에 @EnableConfigurationProperties (QueuesProperties) 주석을 달았습니다.클래스) 및 @PropertySource ("파일 : 설정/queues.properties") – nex