2016-04-21 9 views
0

Configクラスにどのように春は、boot configクラスのプロパティファイルの値をへ

application.properties

datasource.username =テスト

Config.class

をapplication.propertiesファイルを使用する方法
@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

が、通常、あなたは、あなたがこのような値にアクセスすることができ、あなたのconfigsでこれらの1

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

を持っていることを確認し

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

のようなものを置きます

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

あなたは '@ EnableAutoConfiguration'、' @ ComponentScan'と '@PropertySource(" classpath:applica '@ SpringBootApplication'にはすでに最初の2つが組み込まれています)。 'application.properties'はデフォルトでプロパティがスキャンされるため、プロパティソースとして追加する必要はありません。また、あなたのポームにバネ起動スターターがあれば、 'PropertySourcesPlaceholderConfigurer'も必要ありません。 –

+0

次のものを使用している場合、動作していません。 @Value( "$ {datasource.username}") @NotNull //任意 文字列ユーザー名;ここで – Mukti

+0

:http://stackoverflow.com/questions/36635163/spring-boot-externalizing-properties-not-working/36635367#36635367あなたは、内部と外部の両方の性質を持つワーキング春ブートプロジェクトの例を見つけることができます。 @ RahulSharmaはすべての彼のコメントで正しいです。あなたは私たちが –

関連する問題