2016-04-21 1 views
0

Comment utiliser un fichier application.properties dans la classe ConfigComment la valeur de fichier propriété dans la classe de configuration de démarrage Spring

application.properties

datasource.username = test

Config.class

@Configuration 
@EnableTransactionManagement 
@EnableJpaRepositories(
    entityManagerFactoryRef = "abcFactory", 
    transactionManagerRef = "abcmanager", 
    basePackages = { "com.emp.repository" }) 

    public class EmpConfig { 

     @Value("${datasource.username}") 
     String username; 

     @Bean(name = "empDataSource")  
     public DataSource empDataSource(String url, String userName, String pwd) {   
     DriverManagerDataSource dataSource = new DriverManagerDataSource(); 
     dataSource.setDriverClassName("XXX"); 
     dataSource.setUrl(url); 
     dataSource.setUsername(userName); 
     dataSource.setPassword(pwd);   
     return dataSource;   

     } 


    } 

Comment puis-je passer la propriété dans le champ de nom d'utilisateur.

Répondre

1

Selon la façon dont vous avez initialisé votre application, mais normalement vous mettre quelque chose comme

@EnableAutoConfiguration 
@PropertySource("classpath:application.properties") 
@ComponentScan 
@SpringBootApplication 
@EnableTransactionManagement 

Assurez-vous que vous avez un de ces derniers dans vos configs

@Bean 
public static PropertySourcesPlaceholderConfigurer propertyPlaceholderConfigurer() { 
    return new PropertySourcesPlaceholderConfigurer(); 
} 

Ensuite, vous pouvez accéder à des valeurs comme celui-ci

@Value("${datasource.username}") 
@NotNull //optional 
String username; 
+0

vous n'auriez pas besoin de '@ EnableAutoConfiguration',' @ ComponentScan' et '@PropertySource (" classpath: applica tion.properties ")' puisque '@ SpringBootApplication' a déjà les deux premiers incorporés. 'application.properties' est analysé par défaut pour les propriétés, vous n'avez donc pas besoin de l'ajouter en tant que source de propriété. Et si vous avez un démarreur à démarrage à ressort dans votre pom, vous n'avez pas non plus besoin de 'PropertySourcesPlaceholderConfigurer'. –

+0

Si j'utilise ce qui suit, cela ne fonctionne pas. @Value ("$ {datasource.username}") @NotNull // facultatif Chaîne nom d'utilisateur; – Mukti

+0

Ici: http://stackoverflow.com/questions/36635163/spring-boot-externalizing-properties-not-working/36635367#36635367 vous pouvez trouver un exemple de projet de démarrage Spring avec des propriétés internes et externes. @RahulSharma a raison dans tous ses commentaires. –