spring-boot - 在 null 中定义的 bean 'metaDataSourceAdvisor' 无法注册
问题描述
我已经将 Spring Boot 版本从 2.0.3 更新到 2.1.1,但我得到了这个:
***************************
APPLICATION FAILED TO START
***************************
Description:
The bean 'metaDataSourceAdvisor', defined in null, could not be registered. A bean with that name has already been defined in null and overriding is disabled.
Action:
Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true
我得到了错误 - 问题是这defined in null
并不是一个很好的指针。我已经看到了这个问题,但我实际上更愿意继续禁止覆盖模棱两可的 bean。
有任何想法吗?
日志输出
2019-01-06 07:33:39.282 INFO 29626 --- [ restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable
2019-01-06 07:33:39.282 INFO 29626 --- [ restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG'
2019-01-06 07:33:39.912 INFO 29626 --- [ restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data repositories in DEFAULT mode.
2019-01-06 07:33:39.997 INFO 29626 --- [ restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 80ms. Found 23 repository interfaces.
2019-01-06 07:33:39.999 WARN 29626 --- [ restartedMain] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.support.BeanDefinitionOverrideException: Invalid bean definition with name 'metaDataSourceAdvisor' defined in null: Cannot register bean definition [Root bean: class [org.springframework.security.access.intercept.aopalliance.MethodSecurityMetadataSourceAdvisor]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null] for bean 'metaDataSourceAdvisor': There is already [Root bean: class [org.springframework.security.access.intercept.aopalliance.MethodSecurityMetadataSourceAdvisor]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null] bound.
2019-01-06 07:33:40.008 INFO 29626 --- [ restartedMain] ConditionEvaluationReportLoggingListener :
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2019-01-06 07:33:40.010 ERROR 29626 --- [ restartedMain] o.s.b.d.LoggingFailureAnalysisReporter :
解决方案
好的,我自己发现了问题:我@EnableGlobalMethodSecurity
的项目中有两次:
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true) // <--
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
}
和
@SpringBootApplication
@EnableJpaRepositories(basePackages = {"mz.server.spring.repository"})
@EnableGlobalMethodSecurity(prePostEnabled = true, proxyTargetClass = true) // <--
@EntityScan(basePackages = "mz.server.hibernate.model")
@EnableTransactionManagement
@EnableScheduling
public class Application {
}
所以这是我想说的一个不错的新 Spring Boot 功能。
如果您看到此类错误,请注意不需要的重复注释。
推荐阅读
- node.js - 发布后如何从数据库中将数据返回到前端
- visual-studio - Visual Studio - 粘贴时自动转换代码中的新行
- python - 如何知道请求是否在 python 上完成?
- r - 创建包含相同类型插槽的 S4 类
- x86 - 如何在 AVX 向量中找到元素的索引?
- python - 有没有办法在python中使用带有两个for循环的“all”或“any”函数
- nuxt.js - 自定义提取器不适用于 Nuxt PurgeCSS
- javascript - Eslint 无法解析并突出显示可选链接 (?.) 和无效合并 (??) 运算符
- r - 用confusionMatrix计算精度、召回率和F-Score
- ios - 尝试在 swift iOS 中本地保存 4 mb mp4 文件时崩溃