@Configuration注解

底层注解 - @Configuration详解

以前的时候我们是如何给容器中添加组件的?

在这里插入图片描述

以前的时候我们向容器添加组件的时候会是创建一个spring.xml配置文件, 然后在配置文件中使用bean标签来完成对组件的创建

那么现在使用Springboot我们如何来向容器中添加一个组件?

在这里插入图片描述

package com.ffyc.boot.config;

import com.ffyc.boot.bean.Pet;
import com.ffyc.boot.bean.User;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration //告诉Spring这是一个配置类 --> 相当于是一个配置文件
public class MyConfig {
    @Bean //给容器中添加组件, 方法名就是组件名
    public User user01() {
        return new User("猪猪人");
    }

    @Bean
    public Pet tomcatPet() {
        return new Pet("tomcat");
    }
}

@Bean注解修饰的方法的方法名最终会作为组件名 —> 默认是单实例的(和spring默认一样)

这里的配置类肯定也是要被创建对象放到容器中的 —> 由于我的ctrl + f用不了, 直接点搜索页不行, 所以这里就不截屏了

proxyBeanMethods:代理bean的方法
  • Full(proxyBeanMethods = true) : 保证每个@Bean方法被调用多少次返回的组件都是单实例的
  • Lite(proxyBeanMethods = false) : 每个@Bean方法被调用多少次返回的组件都是新创建的
@Configuration(proxyBeanMethods = false) //告诉Spring这是一个配置类 --> 相当于是一个配置文件
public class MyConfig {
    @Bean //给容器中添加组件, 方法名就是组件名
    public User user01() {
        return new User("猪猪人");
    }

    @Bean
    public Pet tomcatPet() {
        return new Pet("tomcat");
    }
}
  • 默认proxyBeanMethods的值为true
这是Springboot2的一个新特性, 让配置类可以编写轻量级模式(Lite)和全模式(Full), 那么这两个模式要如何使用?
  • 配置类组件之间无依赖关系的时候用Lite模式加速容器启动过程, 减少判断
    • 如果使用Lite模式, 那么配置类在容器中的对象就是自己真实的对象, 所以调用方法比较快
  • 配置类组件之间有依赖关系, 方法会被调用得到之前的单实例组件(也就是容器中的组件), 使用Full模式
    • 如果使用Full模式, 那么配置类在容器中的对象其实是一个代理对象, 通过AOP进行了功能增强, 具体就是在返回对象之前判断spring容器中是否有该对象, 如果有, 直接返回Spring容器中的该组件即可 —> 所以这种方式就适合于组件依赖的场景
当然, 我们在SpringMVC中使用的给容器中添加组件的几种注解当然也是可以使用的:
  1. @Controller
  2. @Service
  3. @Repository
  4. @Component
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值