java - Spring Boot 应用程序如何在没有 @Configuration 类的情况下创建 bean

标签 java spring spring-boot

我对 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/

相关文章:

java - 为什么 JMH 对于不同的实现显示相同的结果?

java - 使用反向代理后面的 keycloak 进行身份验证失败

java - Spring MVC + MongoDB

spring - 如何使用 Spring Data JPA 启用基本缓存

java - Mysql导出报错

java - 具有 Spring Security 的 Spring MVC 测试 Controller

spring - 如何使用具有不同数据的相同测试类执行 Spring Rest Controller 测试?

java - 检索 spring boot 中的特定字段

spring-boot - 如何在spring-boot中设置两个不同的CacheManager

java - Camel 和 Jackson 依赖性问题