【问题标题】:Spring boot CRUD application - Bean not found errorSpring Boot CRUD 应用程序 - 找不到 Bean 错误
【发布时间】:2017-05-01 18:58:06
【问题描述】:

我正在使用 spring-boot 开发一个简单的 CRUD 应用程序。

我已经完成了大部分项目,虽然我在尝试运行项目时收到此错误。

说明:

com.application.crud.GreetingController 中的字段 userDBOP 需要一个 'com.application.crud.myoperation.JdbcUserDAO' 类型的 bean 可以 找不到。

行动:

考虑定义一个 bean 类型 'com.application.crud.myoperation.JdbcUserDAO' 在您的配置中。

在 IntelliJ 中,当我将鼠标悬停在导致错误的行上时,会显示以下消息

“无法自动装配。找不到 'JdbcUserDAO' 类型的 bean。

即使我的“Beans.xml”文件中有(位于“src”目录下方:

<bean id="customerDAO" class="com.application.crud.myoperation.JdbcUserDAO">
    <property name="dataSource" ref="dataSource" />
</bean>

谁能告诉我如何解决这个错误?

【问题讨论】:

    标签: java spring maven intellij-idea spring-boot


    【解决方案1】:

    这似乎是使用现有 Spring 上下文配置 Spring Boot 应用程序的问题。在Spring documentation 中有一个部分是关于这个的。

    默认情况下,您需要使用@ImportResource 注解指定应用程序上下文的位置。一个例子是:

    @SpringBootApplication
    @ImportResource("applicationContext.xml")
    public class ExampleApplication {
    
        public static void main(String[] args) throws Exception {
            SpringApplication.run(ExampleApplication.class, args);
        }
    
    }
    

    注意,如果文件位于类路径中的其他位置,那么您需要正确引用它以便 spring 将其拾取(例如 @ImportResource({"classpath*:applicationContext.xml"})

    【讨论】:

    • 我正在尝试这个,但我一直收到错误“资源:beans.xml 无法打开,因为它不存在...。我尝试将此文件移动到与应用程序相同的目录中类,我也尝试过放置文件的完整路径,但没有运气..有什么建议吗?
    • @smith_05_bird 我不知道你的文件结构,但我想我可以给你一个方法。使用 maven 约定,假设文件位于 source/main/java/com/app/beans.xml,那么注释应该是 @ImportResource({"classpath:com/app/beans.xml}) 并且该文件需要存在于您的构建输出中(这可能意味着一个项目清理到那里或将它放在源/主/resources 子文件夹而不是 source/main/java 文件夹)
    • 好的,我已将其移至资源目录,现在可以使用了。谢谢
    • 只需在 pom.xml 中的 build 标签中添加以下标签,它就可以工作了。 src/main/resources
    猜你喜欢
    • 2017-08-08
    • 2019-07-02
    • 2022-11-10
    • 2021-03-18
    • 1970-01-01
    • 2020-01-07
    • 2018-12-13
    • 2018-10-01
    • 1970-01-01
    相关资源
    最近更新 更多