This question already has answers here:
How does autowiring work in Spring?
(9个答案)
去年关闭。
我是Spring Boot的新手,将一个应用程序与一个DemoApplication(主类)和一个称为CodeChallenge的类放在一起。这两个类都在同一文件夹中。我将CodeChallenge类自动连接到主类中,并且正在使用
如何成功配置此应用程序,以便在编译程序时避免此错误并运行CodeChallenge类和testMethod?
DemoApplication类为:
而CodeChallenge类是:
(9个答案)
去年关闭。
我是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");
}
}
最佳答案
您必须在@Service
上添加@Component
或public class CodeChallenge
批注,以让Spring知道多数民众赞成在一个豆。
@Service
public class CodeChallenge {
public void testMethod() {
System.out.println("hello world");
}
}
10-05 19:17