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

spring中的@Configuration配置类和@Component

在这里插入图片描述
在Spring的开发工作中,基本都会使用配置注解,尤其以@Component及@Configuration为主,当然在Spring中还可以使用其他的注解来标注一个类为配置类,这是广义上的配置类概念,但是这里我们只讨论@Component和@Configuration,因为与我们的开发工作关联比较紧密,那么接下来我们先讨论下一个问题,就是@Component与@Configuration有什么区别?

  • 这里直接说重点:
    1.两种注解分为Full模式和Lite模式

Lite模式

当@Bean方法在没有使用@Configuration注释的类中声明时,它们被称为在Lite模式下处理。它包括:在 @Component 中声明的@Bean方法,甚至只是在一个非常普通的类中声明的Bean方法,都被认为是Lite版的配置类。@Bean方法是一种通用的工厂方法(factory-method)机制。

和Full模式的@Configuration不同,Lite模式的@Bean方法不能声明Bean之间的依赖关系。这种模式下的注解不会被Spring所代理,就是一个标准类,如果在这个类中有@Bean标注的方法,那么方法间的相互调用,其实就是普通Java类的方法的调用。


Full模式`

@Configuration在Spring中是代表FULL模式的配置注解,这种模式下的类会被Spring所代理 ,那么在这个类中的@Bean方法的相互调用 (这就表示它的方法不能有final、私有的,静态的) ,就相当于调用了代理方法,那么在代理方法中会判断,是否调用getBean方法还是invokeSuper方法,这里就是这两个注解的最根本的区别。


2.@Configuration标记的类可以理解为一个xml配置文件,然后每一个@bean注解的方法可以理解为<bean>中的内容

3.@Configuration(proxyBeanMethods=true)的时候才代表代理启用,而当启用使用默认的false的时候(2.2版本之后改为了false,因为可以提高启动效率,减少时间),@Configuration(proxyBeanMethods=false)就等于了@Component(未使用代理)

4.在什么时候使用@Configuration或者@Component


  • 如果是在公司的业务功能/服务上做开发,使用Full模式
  • 如果你是个容器开发者,或者你在开发中间件、通用组件等,那么使用Lite模式是一种更被推荐的方式,它对Cloud Native更为友好

有什么问题可以在评论区说明补充,或者后面我想到其他的会补充上去

http://www.lryc.cn/news/160458.html

相关文章:

  • 企业架构LNMP学习笔记29
  • Ubuntu14.04离线安装gcc-5.3.0
  • axios返回几种数据格式? 其中Blob返回时的size是什么意思?
  • 【GO语言基础】基本数据类型
  • 【Python】OpenCV立体相机配准与三角化代码实现
  • 通过Idea或命令将本地项目上传至git
  • python selenium 爬虫教程
  • Linux基础知识及常见指令
  • 分享一个基于Python和Django的产品销售收入数据分析系统源码
  • UniTask保姆级教程
  • uni-app 可视化创建的项目 移动端安装调试插件vconsole
  • HOperatorSet.GenRandomRegions 有内存泄漏或缓存,释放不掉
  • 一维数组笔试题及其解析
  • 微信小程序源码
  • Browserslist 信息和配置使用整理
  • Matlab 如何选择采样频率和信号长度
  • TPTU: Task Planning and Tool Usage of Large Language Model-based AI Agents
  • 【Spring IoC容器的加载过程】
  • C++多文件类的声明与实现
  • 16 “count(*)“ 和 “count(1)“ 和 “count(field1)“ 的差异
  • 【云原生进阶之PaaS中间件】第一章Redis-1.4过期策略
  • windows弹出交互式服务检测一键取消bat脚本
  • 接口使用的最佳时机
  • freertos之任务运行时间统计实验
  • Js中一些数组常用API总结
  • LlamaIndex:将个人数据添加到LLM
  • Mojo 摸脚语言,似乎已经可以安装
  • Spark 6:Spark SQL DataFrame
  • 区块链智能合约编程语言 Solidity
  • 将SSL证书设置成HTTPS的详细步骤