我試圖從我的應用程序的對象中的.properties文件中獲取屬性。我唯一的知識就是通過Environment
這個對象。如何自動裝入Spring環境對象
它工作在我的配置偉大的...
@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;
但我儘量做到在另一個類,它是零。我試過使用@Resource
和@Autowired
和手動注射。
Environment
有什麼特別的嗎?
@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;
}
}
更新:我發現this resource其中突出的@Value
的用法,但我沒有在我的應用程序中使用任何XML配置。
看起來這可能是什麼我在尋找:Loading properties in Spring 3.1 programmatically
我不認爲環境是不是應用程序環境負荷以外的任何有關被啓用。 – 2013-03-13 14:58:58
有沒有另外一種方法讓我從.properties文件獲取配置項目? – Webnet 2013-03-13 14:59:32
「@ Value」註釋讓人想起,但您必須設置一個「PropertyPlaceholderConfigurer」。不要在此引用我的意思,但請看一下。 – 2013-03-13 15:00:39