2016-04-21 152 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在他的所有评论中都是正确的。 –