springboot的bean管理

本文介绍了如何在SpringBoot中通过@Configuration类管理和创建Bean,包括创建同类型Bean的方法、自定义bean名称,并通过@Autowired和@Qualifier进行依赖注入。

Spring Boot 由于没有XML文件,所以所有的Bean管理都放入在一个配置类中实现。
配置类就是类上具有@Configuration的类。这个类就相当于之前的applicationContext.xml
1.创建同类型Bean的实现方式
1.1.新建配置类
位置:在com.yrp.config下新建MyConfig, 放入到config文件夹中是规范
添加注解:在类上贴@Configuration
在方法中贴@Bean

@Configuration
public class MyConfig {
    //访问权限修饰符没有强制要求,一般是protected
    //返回值就是注入到Spring容器中实例类型。
    // 方法名没有强制要求,相当于<bean >中id属性。
    @Bean
    protected User jqk(){
        User user = new User();
        user.setId(1L);
        user.setName("张三");
        return user;
    }
    //自定义bean名称
    @Bean("nml")
    protected  User abc(){
        User user = new User();
        user.setId(2L);
        user.setName("李四");
        return user;
    }
}

新建测试类

@SpringBootTest(classes = BeanApplication.class)
@RunWith(SpringJUnit4ClassRunner.class)
public class test {
    @Autowired
    @Qualifier("jqk")//需要通过注册的名称来实现springboot的注入
    private User abc;
    @Test
    public void test(){
        System.out.println(abc);
    }
}

### Spring BootBean 的加载顺序 在 Spring Boot 应用程序中,Bean 的初始化顺序和生命周期遵循特定的流程。以下是详细的说明: #### 1. 启动上下文创建 应用程序启动时会先创建 `DefaultBootstrapContext` 对象,在此过程中执行一些必要的初始化操作[^2]。 #### 2. 容器准备阶段 Spring Boot 使用 `ApplicationContext` 来管理 Beans。当容器启动结束之后,它会根据 `BeanDefinition` 对象中的信息来实例化所有的单例 Beans[^3]。 #### 3. 实例化前处理 如果存在实现了 `InstantiationAwareBeanPostProcessor` 接口的对象,则会在 Bean 实例化之前对其进行处理。 #### 4. 构造函数注入 通过构造方法完成依赖关系的注入。 #### 5. 属性设置 使用属性 setter 方法或字段注入方式为 Bean 设置属性值。 #### 6. Aware接口回调 此时如果有实现诸如 `BeanNameAware`, `BeanClassLoaderAware` 或者其他类似的 Aware 类型接口的话,那么相应的回调将会被执行。 #### 7. 初始化前置处理器 在此期间可以利用 `BeanPostProcessor.postProcessBeforeInitialization()` 进行额外的操作。 #### 8. 自定义初始化逻辑 对于标记了 `@PostConstruct` 注解的方法以及实现了 `InitializingBean.afterPropertiesSet()` 和/或其他自定义 init-methods 的类来说,现在正是时候运行这些代码片段。 #### 9. 初始化后置处理器 最后一步是调用 `BeanPostProcessor.postProcessAfterInitialization()` ,这允许进一步修改已完全配置好的 Bean 实例。 ```java public class MyBean implements InitializingBean { @Override public void afterPropertiesSet() throws Exception { System.out.println("MyBean has been initialized."); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值