Java 如何从数据库中获取spring.boot.admin.client.username/password的值?

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

我有一个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.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;
    }
}