我有2个配置类,一个带有数据源配置,另一个是我的
扩展WebSecurityConfig
的WebSecurityConfigurerAdapter
。
我想加载要在WebSecurityConfig
中使用的数据库值,因此我需要在WebSecurityConfig
之前完成数据源的初始化。
Oracle配置
@Configuration
@ConfigurationProperties("oracle")
@Order(Ordered.HIGHEST_PRECEDENCE)
public class OracleConfiguration {
//data source beans...
}
Web安全配置
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(securedEnabled = true)
@Order(Ordered.LOWEST_PRECEDENCE)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
//security configs like SAML...
}
而且仍然在调试时,
WebSecurityConfig
中的代码在数据源init,数据源init示例(在OracleConfiguration
内部)之前运行@Bean
@Primary
DataSource dataSource() throws SQLException {
//Init
OracleDataSource dataSource = new OracleDataSource();
dataSource.setUser(username);
dataSource.setPassword(password);
dataSource.setURL(url);
dataSource.setImplicitCachingEnabled(true);
dataSource.setFastConnectionFailoverEnabled(true);
return dataSource;
}
最佳答案
尝试将dataSource放入WebSecurityConfig中的某些bean参数。在这种情况下,webSecurityConfig中的bean将取决于OracleConfiguration中的dataSource bean。我认为它将起作用。
关于java - Spring Boot-初始化dataSources,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53941851/