我有2个配置类,一个带有数据源配置,另一个是我的
扩展WebSecurityConfigWebSecurityConfigurerAdapter
我想加载要在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/

10-09 03:39