0
votes

spring boot valeur application.properties à partir des données bean

Je travaille avec Spring Boot. J'ai des propriétés définies dans application.yml.

   spring:
     datasource:
       username: username
       password: password

les valeurs de nom d'utilisateur et de mot de passe sont stockées en externe, quel programme récupère au démarrage. disons que le bean qui les récupère au démarrage est dbConfig
Comment puis-je injecter des valeurs de dbConfgig vers application.yml?

J'utilise la configuration automatique de spring-data-jpa qui se connecte automatiquement à la base de données au démarrage. Je veux que ces valeurs soient chargées dans application.yml avant que Spring se connecte à la base de données.


3 commentaires

Voulez-vous dire un espace réservé? stackoverflow.com/questions/53273773/...


oui quelque chose de similaire à ça. mais puis-je appeler une fonction dans l'espace réservé?


Comme je le sais, impossible d'appeler une fonction sur application.yaml, pourquoi ne pas définir la valeur dans votre script de démarrage? @ Warrior107


3 Réponses :


0
votes

Je pense que tout d'abord, vous devez créer un thread pour détecter le changement dans votre db Config file , puis vous pouvez redémarrer votre bean (source de données) pour que votre changement soit effectif.

Voir: comment réinitialiser un haricot printanier


1 commentaires

le rechargement du bean est quelque chose avec lequel je peux travailler. Mais le problème sera lors du démarrage, la connexion à la base de données sera établie et échouera.



0
votes

Il n'est pas nécessaire d'injecter l'utilisateur / mot de passe dans application.yml . Vous pouvez les définir par programme comme ceci:

@Configuration
public class DataSourceConfig {
    
    @Bean
    public DataSource getDataSource() {
        DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();
        dataSourceBuilder.driverClassName("org.h2.Driver");
        dataSourceBuilder.url("jdbc:h2:mem:test");
        
        // Take the values from external source, then set them
        dataSourceBuilder.username("username");
        dataSourceBuilder.password("password");
        return dataSourceBuilder.build();
    }
}


2 commentaires

J'utilise spring-boot-cloud-gcp-sql-autoconfigure. Cela crée automatiquement un bean Datasource. Il prend le nom d'utilisateur et le mot de passe de application.yml


@ warrior107 Le spring-boot-cloud-gcp-sql-autoconfigure n'existe pas.



0
votes

Vous pouvez également essayer le nuage de printemps pour stocker les propriétés. Et vous pouvez ensuite utiliser à l'aide d'espaces réservés.

https://cloud.spring.io/spring-cloud-config/reference/html/


0 commentaires