在春季

时间:2016-10-19 14:19:02

标签: java spring spring-mvc

这是我的用例:

我在属性文件中只有db.userName可用。我的本地属性文件中没有db.password

在我的java类中我有

A类{

@Value("${db.userName}")
String userName;

@Value("${db.password}")
String  userPassword;

}

我想通过对外部服务进行REST调用来解析db.password,该服务将密码存储在一个集中的位置。

我如何在Spring 3.1中执行此操作?我试着没有运气扩展PropertySourcesPlaceholderConfigurer。

2 个答案:

答案 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);
    }