无法使用application.properties设置值

时间:2019-05-19 13:24:35

标签: java spring spring-boot

我正在尝试一个非常简单的代码,以从application.properties注入值。 设置的值是属性名称。

代码有什么问题?

application.properties

set.browser = ie
    public class A {

        @Value("${set.browser}")
        private String browser;

        public A(){}

        public void print(){
            System.out.println(browser);
        }
    }

    @Configuration
    public class ABean {
        @Bean
        public A getA(){
            return new A();
        }
    }

    public class AMain {
        public static void main(String[] args) {
            AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(A.class);

            A a = context.getBean(A.class);
            a.print();

        }
    }

1 个答案:

答案 0 :(得分:0)

首先,您的应用程序不是spring boot应用程序-即使没有组件扫描,您也只是实例化了spring上下文。其次,由于缺少组件扫描,因此永远不会创建ABean-您的上下文只有A bean。要解决此问题,您可以从ABean创建上下文:

AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ABean.class);

第三,您没有配置PropertySource(如果您的应用程序是Spring Boot应用程序,则application.properties将是默认属性源,并且不需要它):

@PropertySource("classpath:/application.properties")
@Configuration
class ABean {
  @Bean
  public A getA() {
    return new A();
  }

}