Tôi đã phá vỡ đầu của tôi về điều này. Không chắc chắn những gì tôi đang thiếu. Tôi không thể để có được những @Value
chú thích để làm việc trong một java ứng dụng xuân cấu hình thuần túy (không web)Mùa xuân 3.2 @value chú thích với cấu hình java tinh khiết không hoạt động, nhưng Environment.getProperty hoạt động
@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;
}
}
Các tập tin bất động sản chỉ chứa my.prop=avalue
bean được như sau:
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;
}
}
Biến môi trường in giá trị đúng cách, @Value
thì không.
avalue
Name: ${my.prop}
Các lớp học chính chỉ khởi bối cảnh.
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(Config.class);
Tuy nhiên nếu tôi sử dụng
@ImportResource("classpath:property-config.xml")
với đoạn này
<context:property-placeholder location="app.properties" />
sau đó nó hoạt động tốt. Tất nhiên bây giờ lợi nhuận môi trường null
.
Điều này hiệu quả! Tài liệu Spring @Configuration đã bỏ qua điều này. Dẫn đến tất cả sự nhầm lẫn này – Abe
+1 - Xấu hổ, tôi dường như luôn quên điều này khi bắt đầu một dự án mới, và tôi tìm thấy câu trả lời này mỗi lần. – Bukes
Đăng ký bean là "tĩnh" là chìa khóa cho tôi. Cảm ơn. – Arpit