我已经阅读了几篇关于Spring的文章,但找不到解决这个问题的优雅方法。
a)使用 PropertyPlaceholderConfigurer 加载属性文件。 E.g。
// Load properties file
@Bean(name = "appProperties")
public static PropertyPlaceholderConfigurer getApplicationProperties() {
PropertyPlaceholderConfigurer bean = new PropertyPlaceholderConfigurer();
bean.setLocation(new ClassPathResource("app.properties"));
return bean;
}
b)查找“app.properties”中配置的数据库类型 app.database = MySQL的
c)然后使用 PropertyPlaceHolderConfigurer (例如mysql.properties)加载与此数据库类型相关的属性,并在上下文中为bean提供
答案 0 :(得分:0)
@Bean
public static PropertyPlaceholderConfigurer properties(){
PropertyPlaceholderConfigurer ppc = new PropertyPlaceholderConfigurer();
ClassPathResource[] resources = new ClassPathResource[ ]
{ new ClassPathResource( "db.properties" ) };
ppc.setLocations( resources );
ppc.setIgnoreUnresolvablePlaceholders( true );
return ppc;
}
@Value( "${jdbc.url}" ) private String jdbcUrl;
@Value( "${jdbc.driverClassName}" ) private String driverClassName;
@Value( "${jdbc.username}" ) private String username;
@Value( "${jdbc.password}" ) private String password;
@Bean(name="datasource")
public DataSource datasource() {
BasicDataSource ds = new BasicDataSource();
ds.setDriverClassName(driverClassName);
ds.setUrl(jdbcUrl);
ds.setUsername(username);
ds.setPassword(password);
return ds;
}
我认为以上可能会有所帮助
创建包含数据库详细信息的db.properties
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test
jdbc.username=root
jdbc.password=
答案 1 :(得分:-1)
试试吧。
@ComponentScan(basePackageClasses = "name of package where you are writing the class" )
@PropertySource({ "classpath:(properties file name).properties"})
@Configuration
public class RootAppConfig {
@Bean
public PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
}
这是使用spring 4.0 +
只需在需要的地方使用${property name}