当前位置: 首页 > 知识库问答 >
问题:

Spring Security找不到数据源

翟善
2023-03-14

我使用的是Spring Boot MVC,Spring的ServletRegistrationBean在数据源配置之前被调用,数据源配置加载到StandardContext中。

WebSecurityConfig总是首先被调用,因此从来没有为AutowedprodDatassource定义过bean。

我尝试了从@Order@HarditionalOnMissingBean的所有方法。我找不到一个像样的解释。但是我需要在数据源运行WebSecurity之前为它创建一个Bean

@EnableAutoConfiguration
@SpringBootApplication
@EnableCaching
public class Application {


    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Bean
    public CacheManager cacheManager() {
        return new ConcurrentMapCacheManager("appInfo");
    }

}
@Configuration
@PropertySource({ "classpath:application.properties" })
@EnableTransactionManagement
@EnableJpaRepositories(basePackages = "App.Models",
        entityManagerFactoryRef = "prodEntityManager",
        transactionManagerRef = "transactionManager"
)
public class PrimaryDatasourceConfig {

    @Autowired
    private Environment env;

    @Bean
    @ConfigurationProperties(prefix = "spring.datasource.prod")
    public DataSource prodDataSource() {
        EmbeddedDatabaseFactory factory = new EmbeddedDatabaseFactory();
        factory.setDatabaseName("spring-social-quickstart");
        factory.setDatabaseType(EmbeddedDatabaseType.H2);
        return factory.getDatabase();
    }
}
@Configuration
@EnableWebSecurity
@Import(PrimaryDatasourceConfig.class)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    private DataSource prodDataSource;

    SuperiorUserService jdbcDao;

.......

    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth
                .jdbcAuthentication()
                .dataSource(prodDataSource);
        auth.authenticationProvider(authProvider());
    }

}

共有1个答案

邵博艺
2023-03-14

我想出了一个似乎有用的解决方案。

而不是在我的Spring Security中使用@Autowire。我用@Resource替换了它们,它似乎在等待我的bean首先被创建。

 类似资料:
  • 问题内容: 它是Ajax JSP页面的一部分 Flat_No中总共有4个值,它在控制台和aftr中打印第一个值,这在我的jsp页面上出现错误“ java.sql.SQLException:找不到数据” 问题答案: 当通过较差的JDBC-ODBC桥驱动程序使用MSAccess数据库并从结果集中多次检索相同数据时,这是一个典型错误。您需要检索一次数据并将其分配给变量,然后多次使用该变量。 与 具体问题

  • Spring boot版本1.5.3

  • 我尝试使用mysql-connector-java-5.1.38 xml(wildfly-10.1.0.final\module\system\layers\base\com\mysql\main) 在mysql-connector-java-5.1.38上使用和不使用“.jar”都试过 由 但没有奏效 完全有趣的stacktrace错误[org.jboss.as.controller.manag

  • 主要内容:1.引入jar包,2.配置文件编写,3.编写数据库,4.编写实体类,5.编写Mapper接口,6.在业务层中引入用户的用户名和密码,7.测试1.引入jar包 2.配置文件编写 appilication.properties 需要注意后面需要加上时区,因为当前引入的是SpringBoot2以上的版本 3.编写数据库 4.编写实体类 5.编写Mapper接口 这里是继承了BaseMapper接口 6.在业务层中引入用户的用户名和密码 第一个是导入UserMapper接口 第二个是根据接口去

  • 问题内容: 我正在尝试传递给jasper报告字符串位置的模板。因此,我在模板和值中传递了参数的键。当我在项目中有图像时,一切都在工作,但我想在另一个地方使用它。有什么方法可以从例如属性文件中读取参数?我不知道为什么这种解决方案不起作用: 我的形象: … 错误: 问题答案: 好的,我找到了…应该是:

  • 我对冬眠很陌生,所以我的问题对你来说很明显。我在H2控制台用3个表(data.mv.db)创建了数据库,插入一些值,然后将其复制到项目路径中的数据库文件夹中。现在我试图阅读其中一个测试,但总是有错误,即表不存在。我试着给连接url添加一些属性,比如连接延迟或者不把字母改成大写,但仍然是一样的。 错误: 我试过编辑配置。所以我补充: 并使数据库为空。奇怪的是,在H2控制台打开后,Java创建的数据库