这是我的用例:
我在属性文件中只有db.userName
可用。我的本地属性文件中没有db.password
。
在我的java类中我有
A类{
@Value("${db.userName}")
String userName;
@Value("${db.password}")
String userPassword;
}
我想通过对外部服务进行REST调用来解析db.password,该服务将密码存储在一个集中的位置。
我如何在Spring 3.1中执行此操作?我试着没有运气扩展PropertySourcesPlaceholderConfigurer。
答案 0 :(得分:1)
在app.properties
文件夹下创建resources
文件并将数据放在那里:
db.userName=karthik
db.password=
然后使用它:
@Configuration
@PropertySource("classpath:/app.properties")
public class A {
@Value("#{db.userName}")
String userName;
@Value("#{db.password}")
String userPassword;
}
阅读Spring Doc上的更多信息。
您还可以创建数据库配置类并配置DataSource
bean,如:
@Configuration
@PropertySource("app.properties")
public class DataConfig {
@Autowired
private Environment env;
@Bean
public DataSource dataSource() {
BasicDataSource ds = new BasicDataSource();
ds.setUsername(env.getProperty("db.username"));
ds.setPassword(env.getProperty("db.password"));
return ds;
}
}
答案 1 :(得分:0)
在getter中使用rest服务,虽然我建议你为此实现服务。
private String getUserPassword(){
final String uri = "url/get-db-paswword";
RestTemplate restTemplate = new RestTemplate();
return restTemplate.getForObject(uri, String.class);
}