Spring在基本的Spring Boot应用程序中找不到bean [重复]

Posted

技术标签:

【中文标题】Spring在基本的Spring Boot应用程序中找不到bean [重复]【英文标题】:Spring cannot find bean in basic Spring Boot app [duplicate] 【发布时间】:2019-07-02 09:24:45 【问题描述】:

我是 Spring Boot 的新手,我将一个应用程序与一个 DemoApplication(主类)和一个名为 CodeChallenge 的类放在一起。这两个类都在同一个文件夹中。我将 CodeChallenge 类自动连接到主类中并使用@EventListener(ApplicationReadyEvent.class),因此该类将在编译时触发。但是,每当我编译应用程序时,都会出现以下错误:

Field codechallenge in com.example.demo.DemoApplication required a bean of 
type 'com.example.demo.CodeChallenge' that could not be found.

如何才能成功配置此应用程序,以便在编译程序时避免此错误并运行 CodeChallenge 类和 testMethod?

DemoApplication 类是:

package com.example.demo;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.context.event.EventListener;

@SpringBootApplication    
public class DemoApplication 

    @Autowired
    private CodeChallenge codechallenge;  

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

      @EventListener(ApplicationReadyEvent.class)
      public void callTestMethod() 
          codechallenge.testMethod();   
      


CodeChallenge 类是:

package com.example.demo;

public class CodeChallenge 
    public void testMethod()           
        System.out.println("hello world");
    

【问题讨论】:

【参考方案1】:

您必须在public class CodeChallenge 上添加@Service@Component 注释,让Spring 知道这是一个bean。

@Service
public class CodeChallenge 
    public void testMethod()  
        System.out.println("hello world");
    

【讨论】:

以上是关于Spring在基本的Spring Boot应用程序中找不到bean [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Spring Boot 测试中加载仅添加命名组件的基本 Spring Application-Context?

Spring Boot的基本配置

为啥我的基本 Spring Boot 应用程序在构建后立即崩溃?

Spring Boot在servlet上下文之外获取应用程序基本url

04-Spring Boot基本配置

Spring Boot 我无法切换 keycloak 和基本身份验证