Tôi đang cố gắng lấy các thuộc tính từ tệp .properties trong một đối tượng của ứng dụng của tôi. Kiến thức duy nhất của tôi về cách thực hiện điều này là thông qua đối tượng Environment
.Cách tự động lấy đối tượng Môi trường Mùa xuân
Nó hoạt động tuyệt vời trong cấu hình của tôi ...
@Configuration
@ComponentScan(basePackages = {
"com.production"
})
@PropertySource(value = {
"classpath:/application.properties",
"classpath:/environment-${FETTER_ENVIRONMENT}.properties"
})
@EnableJpaRepositories("com.production.repositories")
@EnableTransactionManagement
public class Config {
private static final String PROPERTY_NAME_DATABASE_URL = "db.url";
private static final String PROPERTY_NAME_DATABASE_USER = "db.user";
private static final String PROPERTY_NAME_DATABASE_PASSWORD = "db.password";
private static final String PROPERTY_NAME_HIBERNATE_DIALECT = "hibernate.dialect";
private static final String PROPERTY_NAME_HIBERNATE_FORMAT_SQL = "hibernate.format_sql";
private static final String PROPERTY_NAME_HIBERNATE_SHOW_SQL = "hibernate.show_sql";
private static final String PROPERTY_NAME_ENTITYMANAGER_PACKAGES_TO_SCAN = "entitymanager.packages.to.scan";
@Resource
Environment environment;
Nhưng tôi cố gắng làm điều đó trong một lớp khác và nó là null. Tôi đã thử sử dụng @Resource
và @Autowired
và tiêm thủ công.
Có điều gì đặc biệt về Environment
đang ngăn điều này không?
@Component
public class Vendor {
private String token;
@Autowired
private Environment environment;
public Vendor() {
//get token from config
//Environment environment = (Environment) ApplicationContextProvider.getApplicationContext().getBean("environment");
setToken(environment.getProperty("api.vendor.token"));
}
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
}
Cập nhật: tôi thấy this resource trong đó nổi bật việc sử dụng @Value
, nhưng tôi không sử dụng bất kỳ cấu hình XML trong ứng dụng của tôi.
Nó trông như thế này có thể là những gì tôi đang tìm kiếm: Loading properties in Spring 3.1 programmatically
Tôi không nghĩ rằng một môi trường có liên quan trong bất cứ điều gì khác hơn là tải bối cảnh ứng dụng. –
Có cách nào khác để tôi lấy các mục cấu hình từ các tệp .properties không? – Webnet
Chú thích '@ Value' xuất hiện trong đầu bạn, nhưng bạn sẽ phải thiết lập' PropertyPlaceholderConfigurer'. Đừng báo cho tôi về điều này, nhưng hãy tra cứu nó đi. –