当前位置: 首页 > news >正文

SpringBoot-常用注解

组件添加

@Configuration、@Bean

1. 配置类

  • 之所以会生效是因为: spring boot 项目默认会扫描主启动类同级的包
//告诉SpringBoot这是一个配置类 == 配置文件
//配置类本身也是组件
@Configuration(proxyBeanMethods = false) 
public class MyConfig {//配置类里面使用@Bean标注在方法上给容器注册组件,默认是单实例的//以方法名作为组件的id。返回类型就是组件类型。返回的值,就是组件在容器中的实例@Bean public User user01(){User zhangsan = new User("zhangsan", 18);//user组件依赖了Pet组件zhangsan.setPet(tomcatPet());return zhangsan;}@Bean("tom")public Pet tomcatPet(){return new Pet("tomcat");}
}

2. proxyBeanMethods:代理bean的方法

  • Full(proxyBeanMethods = true):
    • 保证每个@Bean方法被调用多少次返回的组件都是单实例的
    • 单例模式能有效避免Lite模式下的错误,会先检查容器中是否有该组件,性能没有Lite模式好
    • 配置类组件之间有依赖关系,方法会被调用得到之前单实例组件,用Full模式
  • Lite(proxyBeanMethods = false):
    • 每个@Bean方法被调用多少次返回的组件都是新创建的,
    • 配置类组件之间无依赖关系用Lite模式加速容器启动过程,不会检查容器,直接创建一个新的组件返回
    • 运行时不用生成CGLIB子类,可以减少判断,提高运行性能,降低启动时间,可以作为普通类使用。但是不能声明@Bean之间的依赖
    • Lite模式不完全等同于Spring中的原型模式,因为原型模式不会在IOC创建时就创建对象,而Lite模式则是在创建IOC容器时就会创建所有的对象实例。

3. Full模式与Lite模式

  • spring5.2之后新增lite模式
  • Full模式和Lite模式是针对spring配置而言的,和xml配置无关
  • 何时为Lite模式:
  1. 类上有@Component注解
  2. 类上有@ComponentScan注解
  3. 类上有@Import注解
  4. 类上有@ImportResource注解
  5. 类上没有任何注解,但是类中存在@Bean方法
  6. 类上有@Configuration(proxyBeanMethods = false)
  • 何时为Full模式:
  1. 标注有@Configuration或者@Configuration(proxyBeanMethods = true)

@Component、@Controller、@Service、@Repository

  1. Spring为Controller-Service-Dao的分层模型分别提供了@Controller、@Service、@Repository注解,除此之外的组件使用@Component注解
  2. @Controller、@Service、@Repository其本质就是@Component。

@Import

  1. 自动从类中的无参构造函数创建一个实例注册到 IOC 容器中
  2. 所创建的实例在 IOC 容器中默认的id名为类的全限定名(包名+类名)
//给容器中自动创建出这两个类型的组件、默认组件的名字就是全类名
@Import({User.class, DBHelper.class})
@Configuration(proxyBeanMethods = false)
public class MyConfig {}

@Conditional

1. 满足Conditional指定的条件,则进行组件注入

  • @Conditional中派生了很多的子注解
  • 可以添加在@Bean注解的方法上,也可以放在配置类上
  • 在方法上满足所需条件时则执行方法中内容并注册到 IOC 容器中如果不满足条件则不注册
  • 在配置类上满足需求时则执行配置类中所有的@Bean方法并注册到 IOC 容器中如果不满足条件则不注册

2. 该注解及其扩展来的注解的关键是实现Condition接口重写其matches方法

@ImportResource

  1. 指以.xml结尾的配置文件,通过@ImportResource导入
  2. SpringBoot进行解析xml配置文件,完成对应的组件注册
  3. 放在任一配置类上即可
@ImportResource("classpath:beans.xml") 
public class MyConfig {}

配置绑定

@ConfigurationProperties

  1. 主要的目的是设置前缀prefix,自动匹配到配置文件中设置的数据,相当于初始化参数
  2. 声明在要绑定类的上方,类必须先在容器中注册,最简便的就是使用@component
@Component
@ConfigurationProperties(prefix = "mycar")
public class Car {private String brand;private Integer price;
}
#application.properties中
mycar.brand=YD
mycar.price=100000

@EnableConfigurationProperties

  1. 将设置的类注入到容器中,必须用在配置类
  2. 当第三方的jar使用了@ConfigurationProperties,但是没有注入到容器中,即使用此注解
@EnableConfigurationProperties(Car.class)
//1、开启Car配置绑定功能
//2、把这个Car这个组件自动注册到容器中
public class MyConfig {}

@Value

  1.  @Value("${person.name:李四}")作用在类属性上,也需要bean注入到容器中
  2. 作用是绑定配置文件person.name的值,如果没有这个值,默认值是李四
http://www.dtcms.com/a/490483.html

相关文章:

  • 支付商城网站制作软件开发报价表
  • wordpress类似的平台快速优化排名公司推荐
  • Git 基础操作指南
  • 网站给部分文字做遮挡代码wordpress主题仿逛丢
  • 【bug】大模型微调bug:OSError: Failed to load tokenizer.| Lora
  • 视频生成的背后机理:Wan2技术报告分析
  • 有什么做衣服的网站吗天津市建筑信息平台
  • HTB BoardLight writeup(enlightenment 0.23.1 exploit)
  • 唐山网站搭建平台制作计划
  • 智能体面试题:ReAct框架 是什么
  • 泰山派rk3566 wifi基础知识
  • 【无标题】大模型-AIGC技术在文本生成与音频生成领域的应用
  • 渗透测试(2):不安全配置、敏感明文传输、未授权访问
  • 有记事本做简易网站深圳网站设计x程序
  • AI教育开启新篇章
  • 使用bert-base-chinese中文预训练模型,使用 lansinuote/ChnSentiCorp 中文网购评价数据集进行情感分类微调和训练。
  • 国内做设计的网站做视频素材哪个网站好
  • WebGIS包括哪些技术栈?
  • Python全栈(基础篇)——Day13:后端内容(模块详解)
  • 科创企业品牌营销:突破与发展之路
  • Spring Boot 3零基础教程,Spring Boot 指定日志文件位置,笔记21
  • 腾讯云如何建设网站首页北京网站建设联系电话
  • 【JWT漏洞】
  • 2025年10月版集成RagFlow和Dify的医疗知识库自动化查询(安装篇)
  • 苏州手机网站建设多少钱上海小程序定制公司
  • YOLO-V1 与 YOLO-V2 核心技术解析:目标检测的迭代突破
  • HarmonyOS Next 实战技巧集锦
  • 【鸿蒙进阶-7】鸿蒙与web混合开发
  • HarmonyOS Next 快速参考手册
  • 8.list的模拟实现