我有一个工作的springboot应用程序。在启动时,它执行一个sql脚本,在h2数据库中植入一些测试数据。我刚用过这个,到目前为止效果还不错。
spring:
h2:
console:
enabled: true
settings:
web-allow-others: true
datasource:
url: jdbc:h2:mem:portalDB;LOCK_TIMEOUT=10000;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
driver-class-name: org.h2.Driver
username: sa
password:
hikari:
pool-name: springHikariCP
connection-timeout: 30000
maximum-pool-size: 10
minimum-idle: 2
data:
- file:../data.sql
jpa:
database-platform: org.hibernate.dialect.H2Dialect
当我更改应用程序实现如下内容时:spring security hasspermission for collection
sql脚本未执行。
我发现问题是从以下代码开始的:
@EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true)
public class MethodSecurityConfig extends GlobalMethodSecurityConfiguration {
@Autowired
private PermissionEvaluator permissionEvaluator;
@Autowired
private ApplicationContext applicationContext;
@Override
protected MethodSecurityExpressionHandler createExpressionHandler() {
DefaultMethodSecurityExpressionHandler expressionHandler =
new DefaultMethodSecurityExpressionHandler();
expressionHandler.setPermissionEvaluator(permissionEvaluator);
// Pay attention here, or Spring will not be able to resolve bean
expressionHandler.setApplicationContext(applicationContext);
return expressionHandler;
}
}
然后注入 PermissionEvaluator
触发大量级联依赖项的注入。链中的最后一个组件有两个依赖项。当两种药物中的任何一种被注射时 data.sql
未执行。
如果我删除这两个依赖项, data.sql
正确执行。
据我所见 ScriptUtils
不知怎么的,他没有把文件捡起来。我想知道这两件事怎么会有联系。
1条答案
按热度按时间qvsjd97n1#
我设法通过打破bean注入中的循环依赖关系来解决这个问题,这似乎导致了这个问题。
围绕着这些线: