springboot学习篇之bean的实例化方式

一、第一种方案是最常用的

@ComponentScan()

二、第二种是本文主要介绍的

继承ImportSelector类,实现selectImports方法

1、为什么能够实例化bean

这就需要了解和根据spring的源码了,spring在启动的过程中,会调用

2、该方法用于什么场景

应用场景很简单,就是个性化对对类进行实例化,比如在某种条件实例化A,在另外一种条件实例化B

在Spring Boot中,bean实例化是通过依赖注入(Dependency Injection, DI)来实现的。Spring Boot会自动扫描项目中配置的包,识别出所有的bean,并将它们实例化并注入到需要的地方。以下是一些关键点: 1. **@ComponentScan**:Spring Boot默认会扫描主应用类所在的包及其子包。如果你的bean在其他包中,需要在主应用类上使用@ComponentScan注解来指定扫描的包。 2. **@Component**:这是一个通用的注解,用于标识一个类为Spring的组件。Spring会自动扫描并实例化这些组件。 3. **@Service**:用于标识一个服务层的组件,通常用于业务逻辑的处理。 4. **@Repository**:用于标识一个数据访问层的组件,通常用于数据库操作。 5. **@Controller**:用于标识一个控制层的组件,通常用于处理HTTP请求。 6. **@Bean**:用于在配置类中定义一个bean。配置类需要使用@Configuration注解标识。 以下是一个简单的示例: ```java // 主应用类 @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } // 服务层组件 @Service public class UserService { // 业务逻辑 } // 数据访问层组件 @Repository public class UserRepository { // 数据库操作 } // 控制层组件 @Controller public class UserController { private final UserService userService; // 构造函数注入 public UserController(UserService userService) { this.userService = userService; } // 处理HTTP请求的方法 } // 配置类 @Configuration public class AppConfig { @Bean public MyBean myBean() { return new MyBean(); } } ``` 在上述示例中,Spring Boot会自动扫描`Application`类所在的包及其子包,识别出`UserService`、`UserRepository`和`UserController`等组件,并将它们实例化。通过构造函数注入,`UserController`可以自动获取`UserService`的实例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值