我正在尝试一个非常简单的代码,以从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();
}
}
答案 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();
}
}