2017-04-04 1 views
1

J'ai une classe de configuration de source de données dans une application de démarrage Spring. Extrait ci-dessous@Refreshscope avec la configuration de la source de données

Ma configuration est extraite du serveur Spring config de cloud. Lorsque je modifie mon nom d'hôte de base de données et que je l'actualise à l'aide du point de terminaison/actualiser, l'application n'utilise PAS de nouvel hôte de base de données. Toute idée pourquoi?

@Configuration 
@RefreshScope 
public classe DBConfig 
{ 
    @Resource 
    private Environment env; 

    private DataSource ehubDataSource() { 
     DriverManagerDataSource dataSource = new DriverManagerDataSource(); 
     dataSource.setDriverClassName(env.getProperty("datasource.driverClassName")); 
     dataSource 
       .setUrl(env.getProperty("datasource.url")); 
     dataSource.setUsername(env.getProperty("datasource.username")); 
     dataSource.setPassword(env.getProperty("datasource.password")); 
     return dataSource; 
    } 

} 
+0

Je ne suis pas sûr, mais je pense que vous devez détruire la portée/objet (sur le changement) et le recréer pour refléter –

+0

@RDR est ma réponse est utile? – VelNaga

+0

Ya ...... Merci! – RDR

Répondre

1

Comme par docs, @ RefreshScope travaillera sur le plan technique @Configuration, à condition tout ce qui dépend de ces haricots ne peut pas compter sur eux étant mis à jour lorsqu'un rafraîchissement est lancé, à moins qu'il est lui-même dans @RefreshScope

Pourriez-vous s'il vous plaît vérifier votre "Environment.java", Vous pouvez oublier de spécifier @RefreshScope dans Environment.java. S'il vous plaît partager votre Environment.java si cela ne fonctionne pas.