Spring Securtiy DB認証について(Security Configでのプロパティ値の取り扱い方)
Spring Securityでログイン処理を実装しているのですが、DB認証が出来ません。
原因はConfigクラスでインジェクションしているdatasourceが正常に設定されていないからです…。
Configは・・・
WebSecurtyConfig(@EnableWebSecurityのついたもの。)
WebMvcConfig(@EnableWebMvcのついたもの)
としています。
web.xmlのContextLoaderListenerのcontextConfigLocationの値が「WebSecurtyConfig」としているので「WebSecurtyConfig」がWEBアプリケーション用コンフィギュレーションクラスになるとおもい、「WebSecurtyConfig」にメッセージリソースの定義や、DataSourceの定義を書いているのですがDataSourceの設定がなぜか上手くできません。
原因はプロパティからの値が取得できないためですが、なぜ取得出来ないのかわかりません。
現在、@Value()に直接値を書いて動かしている状態ですが、ちゃんとプロパティファイルから値を読むにはどうすればいいでしょうか?
WebSecurtyConfig
@EnableWebSecurity
@ComponentScan(basePackages= {"example.app","example.table"})
@PropertySource("classpath:test.properties")
public class WebSecurtyConfig extends WebSecurityConfigurerAdapter {
@Bean(destroyMethod="close")
public DataSource dataSource(
@Value("${db.url}") String url,
@Value("${db.usernm}") String username,
@Value("${db.pass}") String password,
@Value("${db.driverNm}") String driverNm) {
BasicDataSource bds = new BasicDataSource();
bds.setDriverClassName(driverNm); //driverNm = "${db.url}"になる・・・
bds.setUrl(url);
bds.setUsername(username);
bds.setPassword(password);
bds.setDefaultAutoCommit(false);
return bds;
}
ちなみにWebMvcConfigのほうでは全く同じコードを書きましたが、正常にDataSource設定ができました。
(セキュリティコンフィグではプロパティファイルの値参照はできないのでしょうか?そもそもConfig設定これあっているのかも不安です・・・)