2016-04-21 102 views
0

如何配置類使用application.properties文件如何在春季啓動配置類屬性文件值

application.properties

datasource.username =測試

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;   

     } 


    } 

如何將屬性傳遞給用戶名設置字段。

回答

1

取決於你如何初始化您的應用程序,但通常你會放像

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

請確保您有這些中的一個在你的configs

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

然後你就可以像這樣訪問值

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

你不需要'@ EnableAutoConfiguration','@ ComponentScan'和'@PropertySource(「classpath:applica因爲'@ SpringBootApplication'已經包含了前兩個,所以'tion.properties「)。 'application.properties'默認掃描屬性,所以你不需要添加它作爲屬性源。如果你在你的pom中有spring引導啓動器,你也不需要'PropertySourcesPlaceholderConfigurer'。 –

+0

如果我使用以下,它不起作用。 @Value(「$ {datasource.username}」) @NotNull //可選 字符串用戶名; – Mukti

+0

這裏:http://stackoverflow.com/questions/36635163/spring-boot-externalizing-properties-not-working/36635367#36635367你可以找到一個具有內部和外部屬性的工作Spring Boot項目的例子。 @RahulSharma在他的所有評論中都是正確的。 –