我对 Spring Boot 应用程序很陌生。我想了解 spring Boot Application 如何在没有 @Configuration class 的情况下创建 bean。我查看了一个示例项目,其中既没有 @Bean 定义也没有组件扫描,但 @Autowired 提供了对类的依赖项。请看下面的片段:
@RestController
public class RestController{
**@Autowired
public CertificationService certificationService;**
.
.
.
.
}
//Interface
public interface CertificationService{
public List<Certification> findAll();
}
//Implementation Class
@Transactional
@Service
public class CertificationServiceImpl{
public List<Certification> findAll(){
.
.
}
}
我对 springs 的有限知识告诉我,当一个类上有一个 @Service 注释时,必须在某个地方有一个 @ComponentScan 来创建 bean。但是如果没有组件扫描,CertificationServiceImpl bean 是如何创建的,因此 RestController 中的 CertificationService Autowiring 如何在这里工作?
最佳答案
作为 said在文档中:
... The
@SpringBootApplication
annotation is equivalent to using@Configuration
,@EnableAutoConfiguration
and@ComponentScan
...
假设您有类似以下的 Spring Boot 应用程序类:
package com.mypackage;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringBootApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootApplication.class, args);
}
}
然后默认扫描包 com.mypackage
下的所有包以查找 Spring 组件。顺便说一句,您可以在 @SpringBootApplication
注释中指定要扫描的包,而无需使用 @ComponentScan
。更多详情 here .
关于java - Spring Boot 应用程序如何在没有 @Configuration 类的情况下创建 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41318460/