我构建了一个Spring-Boot-Application,它使用ComponentScan
来识别Spring bean。在应用程序启动时,我收到消息
Parameter <X> of constructor in <BEANUSER> required a bean of type '<BEAN>' that could not be found.
在我定义<BEAN>
的同一个包中,还有其他几个可以找到并注入的Spring bean。但是,BEAN
的构造函数从未被调用。 BEAN
的简单名称为TransactionManager
。
我检查了所有注释,它们与工作的bean类似。
有什么问题?
答案 0 :(得分:0)
Spring boot将 - 默认情况下 - 生成一堆所谓的calles隐式spring-beans。创建的bean取决于类路径中找到的库。如果类路径包含spring-boot-starter-jdbc,则会导致创建Spring-Transactionmanager(作为隐式bean)。
虽然这个类很可能是一个不同的包名,并且不能替代注入,但是bean的名称存在冲突(默认情况下只包含bean类的简单名称)。这导致Spring完全忽略了用户定义的类。
将您的TransactionManager
重命名为其他内容,一切都应该没问题。