2016-04-25 6 views
0

私はSpringブートを初めて使用し、xml less configも使用しています。Springプロパティがロードされない

私のbeanクラスにプロパティファイルの値を追加しようとしましたが、nullの値を取得しようとしています。ここに私のコードは次のとおりです。

config.java:

import java.sql.SQLException; 

import javax.annotation.PostConstruct; 
import javax.sql.DataSource; 

import oracle.jdbc.pool.OracleDataSource; 

import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.beans.factory.annotation.Value; 
import org.springframework.boot.context.properties.EnableConfigurationProperties; 
import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.ComponentScan; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.context.annotation.PropertySource; 
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer; 
import org.springframework.core.io.ClassPathResource; 
import org.springframework.core.io.Resource; 
import org.apache.commons.dbcp2.BasicDataSource; 
import org.springframework.stereotype.Component; 

@Configuration 
@ComponentScan 
@PropertySource("classpath:application.properties") 
public class Config { 

    @Autowired 
    private static SpringAppProp springAppProp; 





    @Value("${url}") 
    private static String url; 

    @Value("${driverClassName}") 
    private static String driverClassName; 

    @Value("${username}") 
    private static String username; 

    @Value("${password}") 
    private static String password; 

    @Value("${initialSize}") 
    private static int initialSize; 

    @Value("${maxActive}") 
    private static int maxActive; 

    @Value("${dbPort}") 
    private static int dbPort; 

    @Value("${dbServiceName}") 
    private static String dbServiceName; 

    @Value("${dbServer}") 
    private static String dbServer; 



    @Bean 
    public static PropertySourcesPlaceholderConfigurer placeholderConfigurer() { 
     return new PropertySourcesPlaceholderConfigurer(); 
    } 
    @Bean(name = "DataSource") 
    public static BasicDataSource dataSource() throws SQLException { 
     BasicDataSource basicDataSource = new BasicDataSource(); 
     basicDataSource.setUrl(url); 
     basicDataSource.setDriverClassName(driverClassName); 
     basicDataSource.setInitialSize(initialSize); 
     basicDataSource.setMaxTotal(maxActive); 
     basicDataSource.setMaxIdle(5); 
     basicDataSource.setMinIdle(0); 
     basicDataSource.setMaxWaitMillis(15000); 
     return basicDataSource; 
     } 

} 

application.properties:

server.port=8080 
driverClassName=oracle.jdbc.driver.OracleDriver 
username=XXXX 
password=XXXX 
initialSize=10 
maxActive=20 
dbPort=XXX 
dbServiceName=xxxx 
dbServer=xxxxxx 
url=jdbc:oracle:[email protected]//xxxxx 

誰かが見て、私は、私がここで間違ってやっているものを知らせることができます。..

+2

最初に静的を削除してから、クラス全体を削除してください。あなたは既に 'DataSource'を設定し、既に' application.properties'を読み込んでいるSpringブートを使用しています。フレームワークではなくフレームワークで作業してください。 –

+0

どうすればいいですか?私には動作するコードを渡せますか?また、データソース以外のいくつかのプロパティを読むためにproeprtiesが必要です。 –

答えて

2

注釈を付けたフィールドのstaticValueに置き換えます。

@Value("${url}") 
private String url; 

@Value("${driverClassName}") 
private String driverClassName; 

あなたがSpring Bootを使用しているので、@PropertySourceの必要はありません。

更新 M. Deinumが言ったように、それは完全にあなたのコンフィギュレーション・クラスをドロップすると、あなたのapplication.propertiesspring.datasource.*プロパティを使用することをお勧めします。

+0

server.port = 8080 spring.datasource.driverClassName = oracle.jdbc.driver.OracleDriver spring.datasource.username = XXX spring.datasource.password = XXXX #removeAbandoned =真 spring.datasource.initialSize = 10 spring.datasource.maxActive = 20 spring.datasource.dbPort = XXXX spring.datasource.dbServiceName = xxxxxx spring.datasource.dbServer = xxxxxxx spring.datasource.url = xxxxx #management.port = 9080 コードがこのように変更されました @Value( "$ {spring.datasource.url}") \t公開ストリングDBurl; \t @Value( "$ {spring.datasource.driverClassName}") \t public String driverClassName1; まだ値がnullのようになっています –

+0

'spring.datasource。* 'プロパティを使用した後、別のクラスに注入する必要はありません。スプリングは' DataSource'のインスタンスをインスタンス化します; –

+1

答えをありがとう –

関連する問題