@Configuration(proxyBeanMethods = false) 解析

news/2025/4/21 10:19:49/

又是美好的一天呀~
个人博客地址: huanghong.top

往下看看~

  • @Configuration(proxyBeanMethods = false) 解析
    • proxyBeanMethods分析
    • 总结

@Configuration(proxyBeanMethods = false) 解析

最近看一些源码的时候,发现很多Configuration配置类上@Configuration(proxyBeanMethods = false) 都把proxyBeanMethods设置成了false,特地研究下。
在这里插入图片描述

源码中默认是true,对这个属性的解释也可以大概知道。

proxyBeanMethods分析

  1. 如果为true, 则表示被@Bean标识的方法都会被CGLIB进行代理,而且会走bean的生命周期中的一些行为(比如:@PostConstruct,@Destroy等 spring中提供的生命周期), 如果bean是单例的,那么在同一个configuration中调用
    @Bean标识的方法,无论调用几次得到的都是同一个bean,就是说这个bean只初始化一次。

  2. 如果为false,则标识被@Bean标识的方法,不会被拦截进行CGLIB代理,也就不会走bean的生命周期中的一些行为(比如:@PostConstruct,@Destroy等 spring中提供的生命周期),如果同一个configuration中调用@Bean标识的方法,就只是普通方法的执行而已,并不会从容器中获取对象。所以如果单独调用@Bean标识的方法就是普通的方法调用,而且不走bean的生命周期。

总结

如果配置类中的@Bean标识的方法之间不存在依赖调用的话,可以设置为false,可以避免拦截方法进行代理操作,也是提升性能的一种优化。但是需要注意,@Bean标识的返回值对象还是会放入到容器中的,从容器中获取bean还是可以是单例的,会走生命周期。

感谢阅读完本篇文章!!!
个人博客地址: huanghong.top


http://www.ppmy.cn/news/64217.html

相关文章

阿里、京东等大厂年薪50w的测试都是什么水平?

各位做测试的朋友,但凡经历过几次面试,那么你一定曾被问到过以下问题: 1、在Linux环境下,怎么执行web自动化测试? 2、Shell如何,Docker熟悉吗? 3、全链路的压测实操过吗,如何推进与开…

如何使用Typeface-Helper-自定义字体

随着科技的不断发展,人们对于视觉效果的要求也越来越高。在设计领域中,字体设计是非常重要的一环,因为它直接影响了整个设计的风格和品质。因此,越来越多的设计师开始寻找能够帮助他们自定义字体的工具。在这个过程中,…

【JavaEE初阶】文件操作——IO

摄影分享~ 文章目录 文件文件路径(Path) 文件的类型Java中操作文件File概述 文件内容的读写——数据流字节流InputStream概述OutputStream 概述字符流FileInputStream 概述利用 Scanner 进行字符读取 实例练习 文件 文件:File这个概念&…

KingbaseES 的角色和权限管理

KingbaseES使用角色的概念管理数据库访问权限。为了方便权限管理,用户可以建立多个角色,对角色进行授权和权限回收,并把角色授予其他用户。 数据库初始化时,会创建一个超级用户的角色:system(默认,可修改)。…

洗地机怎么选?高性价比家用洗地机推荐

洗地机是一款高效、智能的清洁设备,可轻松去除地面污渍,免除了传统清洁方式的繁琐和费时。采用高科技材料和技术,可快速有效地将地面污物清除,保持环境卫生和清爽。但是面对市场上众多的洗地机品牌,许多家人们都不知道…

手敲Mybatis(十)-完善ORM框架支持增删改查

我们把基本的功能都完成了,解析xml、构建映射代理、执行sql,解析处理结果,目前这些只支持查询,我们还差添加下增删改的功能,本章节就来完善下增删改,其实本章节比较简单,因为之前的每个章节都已…

KingbaseES 实现 MySQL 函数 last_insert_id

用户从mysql迁移到金仓数据库过程中,应用中使用了mysql函数last_insert_id()来获取最近insert的那行记录的自增字段值。 mysql文档中关于函数的说明和例子: LAST_INSERT_ID() 如果没有参数,则LAST_INSERT_ID()返回一个BIGINT UNSIGNED(64位)值…

Linux内核源码分析-进程调度(三)-从进程创建到唤醒的过程去了解CFS调度器

进程的创建是通过do_fork函数。新进程的诞生,我们调度核心层会通知调度类来初始化新进程。 我们一路顺着do_fork函数往下看:do_fork()->_do_fork()->copy_process()->sched_fork()。 long do_fork(unsigned long clone_flags, // 创建进程的标…