2016-12-21 4 views
-1

Я пытаюсь использовать @ConfigurationProperties для связывания свойств из файла свойств. Но когда я пытаюсь напечатать эти значения, на самом деле они имеют нулевые или значения по умолчанию для типа данных java. Все нижеследующие java & файл свойств находятся в одном пакете.@ConfigurationProperties не привязывает значения. Получение значений null или по умолчанию для типов данных

Вот код:

@SpringBootApplication 
@ComponentScan 
@EnableConfigurationProperties 
public class SimpleMain { 


    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     ApplicationContext ctx = SpringApplication.run(BeanLoader.class, args); 
     PropertyLoader pl = ctx.getBean(PropertyLoader.class); 
     System.out.println(pl.getName()); 
    } 

} 


import org.springframework.boot.context.properties.ConfigurationProperties; 


@ConfigurationProperties("test") 
public class PropertyLoader { 

    private String name; 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 


} 

import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.Configuration; 

@Configuration 
public class BeanLoader { 

    @Bean 
    public PropertyLoader getPropertyLoader(){ 
     return new PropertyLoader(); 
    } 
} 


application.properties  

test.name=karthik 
+0

Почему вы создаете новый 'AnnotationConfigApplicationContext' и пытается получить бобы из этого? Почему вы пытаетесь определить два компонента «PropertyLoader»? –

+1

Не используйте на нем '@ Component'. – chrylis

+0

Я могу автоустанавливать его, но AnnotationConfigApplicationContext не должен быть проблемой при загрузке бобов. – karthik

ответ

0
ApplicationContext ctx = SpringApplication.run(BeanLoader.class, args); 

следует заменить на

ApplicationContext ctx = SpringApplication.run(SimpleMain.class, args);