2016-12-06 10 views
0

DataSourceapplication-prod.propertiesから作成しようとしています。春のプロパティを持つ独自のデータソースを作成

それは私のapplication-prod.properties私は、次ているでは(コンソールに示されている)prodアクティブなプロファイル

を拾うんので、今私は、私のapplication.propertiesが読み込まれます知っている:今、私は変更する場合

jdbc.url=jdbc:postgresql://localhost:5432/myDb 
jdbc.username=root 
jdbc.password=root 
jdbc.driverClassName=org.postgresql.Driver 

私のコンソールは、コンパイル時エラーCould not resolve Spring property placholderを意味します。これは、コンパイラが実際に@Valuepropertiesファイル内に存在するかどうかをチェックしていることも示しています。

@Component 
open class BaseDAO(
     //@Value("\${jdbc.url}") private val url: String, 
     //@Value("\${jdbc.username}") private val username: String, 
     //@Value("\${jdbc.password}") private val password: String 
) { 
    @Value("\${jdbc.url}") 
    lateinit open var url: String 
    @Value("\${jdbc.username}") 
    lateinit open var username: String 
    @Value("\${jdbc.password}") 
    lateinit open var password: String 

    lateinit open public var datasource: DataSource; 

    open fun getDs(): DataSource { 
     return HikariCP.init(name="pool1", url = url, username = username, password = password) 
    } 
} 

ここからわかるように、私は@Valueをコンストラクタに渡してみました。しかし、私はextendBaseDAOすべてのクラスで、コンストラクタが空(class SomeDAO : BaseDAO())であると不平を言っていました。

今起こる問題は、私の性質urlusername、およびpasswordが初期化されていないことです。


propertiesを解決する方法があります(すべての初期化/クラスの@Autowiredを使用せずに。)

私が望む唯一のことは、そのファイルからプロパティを読み込み、それらを使用する、しないことです「春のベストプラクティス」を探していますが解決のために

答えて

0

はそれに注入し、それらのプロパティを持つデータソースのために初期化してから自動配線データソースのことを含ま@Configurationクラスを持っていますすべてのDAOにBeanをインストールします。そのため、これらのプロパティ値をDAOに注入する必要はありません。

+0

しかし、これは '@ Value'が変数を設定していないという問題を解決しますか? – Ivaro18

関連する問題