Java 如何从数据库中获取spring.boot.admin.client.username/password的值?
我有一个SpringBootAdmin项目,现在我在application.properties文件中硬编码用户名和密码,如下所示Java 如何从数据库中获取spring.boot.admin.client.username/password的值?,java,database,spring-boot,spring-boot-admin,Java,Database,Spring Boot,Spring Boot Admin,我有一个SpringBootAdmin项目,现在我在application.properties文件中硬编码用户名和密码,如下所示 spring.boot.admin.client.username=user spring.boot.admin.client.password=pass spring.boot.admin.client.instance.metadata.user.name=user spring.boot.admin.client.instance.metadata.user
spring.boot.admin.client.username=user
spring.boot.admin.client.password=pass
spring.boot.admin.client.instance.metadata.user.name=user
spring.boot.admin.client.instance.metadata.user.password=pass
但我想从数据库中获取这些值,而不是像这样硬编码。我想配置连接以将管理服务器自注册为客户端。我是SpringBoot的初学者。我怎么做?谢谢。因此
应用程序.properties
文件中的每个配置都可以通过Javacode进行配置。首先,您必须为您的项目创建一个数据源。将spring数据jpa
依赖项添加到项目中并配置数据源
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
因此,JdbcTemplate
已经有了一个数据库连接,并创建了从数据库获取用户名和密码的查询。然后可以设置ClientProperties Bean
注意:此代码未经测试,但为您提供了一些完成工作的提示。您应该定义一个@Configuration类,并在其中尝试从数据库检索信息。谢谢。spring.boot.admin.client.username正常。但是有办法获取spring.boot.admin.client.instance.metadata.user.name/password的值。我试着在你计数的时候得到,但是失败了。你能帮忙吗?
@Configuration
public class AdminClientConfig {
private final JdbcTemplate jdbcTemplate;
private final Environment environment;
public AdminClientConfig(JdbcTemplate jdbcTemplate,
Environment environment) {
super();
this.jdbcTemplate = jdbcTemplate;
this.environment = environment;
}
@Bean
public ClientProperties clientProperties() {
ClientProperties cp = new ClientProperties(environment);
cp.setUsername(getUsername());
cp.setPassword(getPassword());
return cp;
}
private String getUsername() {
String username = jdbcTemplate.queryForObject(
"select username from AnyTable where id = ?",
new Object[] { "123" }, String.class);
return username;
}
private String getPassword() {
String password = jdbcTemplate.queryForObject(
"select password from AnyTable where id = ?",
new Object[] { "123" }, String.class);
return password;
}
}