我在@Configuration类中有以下内容
@PropertySource(name = "applicationProperties", value = {
"classpath:application.properties",
"classpath:${spring.profiles.active}.properties",
"classpath:hibernate.properties",
"classpath:${spring.profiles.active}.hibernate.properties" })
我希望将所有属性检索为java.util.Properties对象,或者使用@Value通过前缀将其过滤为属性的子集。
//This works but only gives System.properties
@Value("#{systemProperties}")
private Properties systemProperties;
//I want to do this, but I can't find a way to make it work with Spring EL if there is a way.
@Value("#{application.Properties}")
private Properties appProperties;
我正在使用纯java配置,我只需要以某种方式获取由@PropertySource配置的属性。 Spring Environment只允许您一次获得一个属性。
简而言之,我真正想要的是所有以hibernate为前缀的属性。*
答案 0 :(得分:4)
请参阅以下链接:
http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html
如果你或者可以使用Spring Boot,那么你可以做这样的事情:
@Component
@ConfigurationProperties(locations = "classpath:config/hibernate.properties", prefix = "hibernate")
public class HibernateProperties {
Properties datasource = new Properties();
public Properties getDatasource() {
return datasource;
}
}
和hibernate.properties文件:
hibernate.datasource.initialize=false
hibernate.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
hibernate.datasource.url=jdbc:sqlserver://xxx;DatabaseName=yyy
hibernate.datasource.username=user
hibernate.datasource.password=passwd
看到 hibernate 是前缀,数据源是属性对象的名称。所以你可以调用datasource.get(“initialize”)等属性。
您可以在任何地方注入HibernateProperties类并调用getProperties方法来获取hibernate属性。 希望这会有所帮助。