我是 Spring Boot 的新手,并将一个应用程序与 DemoApplication(主类)和一个名为 CodeChallenge 的类放在一起。这两个类都位于同一文件夹中。我将 CodeChallenge 类 Autowiring 到主类中,并使用 @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");
}
}
最佳答案
您必须在 public class CodeChallenge
上添加 @Service
或 @Component
注释,让 Spring 知道这是一个 bean。
@Service
public class CodeChallenge {
public void testMethod() {
System.out.println("hello world");
}
}
关于java - Spring 在基本 Spring Boot 应用程序中找不到 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54587270/