首页 > 其他分享 >Spring配置类理解(Lite模式和Full模式)

Spring配置类理解(Lite模式和Full模式)

时间:2023-02-09 21:34:46浏览次数:307  
标签:Full Spring 配置 模式 Bean Lite 注解 标注

Spring中的注解大家在开发中都常常用到,但是如果我说我们常常用的注解修饰了一个类,表示这个类就是一个配置类很多开发者都会有点迷糊了。具体配置类在开发中有什么样的用途我就不多说了,相信很多人都知道,如果不知道可以私信我,我可以给你说一些关于它的简单点的知识,当然后期也可能会讲一些配置类的高级点的知识。下面我们就说一下那些注解修饰的类可以称之为配置类。

1:类上标注有@Component注解。PS 可以看Spring源码@Service,@Controller注解上都有此注解。

2:类上标注有@ComponentScan注解。

3:类上标注有@Import注解。

4:类上标注有@ImportResource注解。

5:若类上没有任何注解,但类内存在@Bean方法。

以上case的前提类上没有标注@Configuration注解,在Spring5.2之后新增加了一种case也算Lite模式标注有@Configuration(proxyBeanMethods=false) ,注意此值默认为true,需要显示改为false。上面列举的都可以称为配置类,属于Lite模式的配置类。

Lite模式优缺点:

 优点:运行时不再需要给对应类生成CGLIB子类,提高了性能,降低了启动时间。 可以该配置类当作一个普通类使用,也就是@Bean方法可以是private,可以是final。

缺点:不能声明@Bean之间的依赖,也就是说不能通过调用方法依赖其他Bean。其实这个缺点还好,很容易用其他方法弥补,比如:把依赖Bean放进方法入参里即可。

Lite模式下,配置类本身不会被CGLB增强,放进IOC容器就是本尊。

Lite模式下,配置类内部不能通过方法调用来处理依赖,否则每次生成的都是一个新实例,而非IOC容器内的单例。

项目中标注为 @Configuration这个注解并且proxyBeanMethods=true的类称为full模式的配置类。

优点:可以支持通过常规java调用bean的方法并且保证是容器内的bean,有效的避免了Lite模式下操作时难以追踪的细微错误。

缺点:运行的时候给类生成一个CGLB子类放进容器,有一点的开销(这种开销在Springboot这种拥有大量配置类中不可忽视)。

正因为被代理,@Bean方法不可以时private ,不可以时final。

欢迎扫码关注公众号,会努力分享更多精彩内容。

 

标签:Full,Spring,配置,模式,Bean,Lite,注解,标注
From: https://www.cnblogs.com/scott1102/p/17107003.html

相关文章

  • shiro、springboot、vue、elementUI CDN模式前后端分离的权限管理demo 附源码
    源码下载地址https://github.com/Aizhuxueliang/springboot_shiro.git前提你电脑的安装好这些工具:jdk8、idea、maven、git、mysql;shiro的主要概念Shiro是一个强大的......
  • Spring依赖注入
    Spring注入方式(三种):1、set注入<beanid="将要创建对象名"class="要创建的对象的属性全类名"><!--通过property标签给对象的属性赋值name:set:方法中的属性名......
  • Spring 注解实现IOC
    Spring注入方式(三种):1、set注入<beanid="将要创建对象名"class="要创建的对象的属性全类名"><!--通过property标签给对象的属性赋值name:set:方法中的属性名......
  • Spring学习笔记
    Spring的优良特性非侵入式:基于Spring开发的应用中的对象可以不依赖于Spring的API控制反转:IOC——InversionofControl,指的是将对象的创建权交给Spring去创建。使用S......
  • 五、SpringMVC获得请求数据
    获得请求参数客户端请求参数的格式是:name=value&name=value......服务器端要获得请求的参数,有时还需要进行数据的封装,SpringMVC可以接收如下类型的参数:基本类型参数......
  • SpringMVC初体验
    目录SpringMVC简介MVC介绍什么是SpringMVCSpringMVC的特点入门案例创建maven工程配置web.xml默认配置方式扩展配置方式url-pattern标签中使用/和/*的区别创建请求控制器创......
  • OpenSergo & Spring Cloud Alibaba 带来的服务治理能力
    作者:十眠、牧思SpringCloud应用为何需要服务治理随着微服务技术的发展,微服务(MicroServices)的概念早已深入人心,越来越多的公司开始使用微服务架构来开发业务应用。......
  • mysql 主从复制传统模式转换成gtid模式
    业务希望在主备切换时候可以自动完成1.修改参数主从两边都设置setglobalset enforce_gtid_consistency=warn;去错误日志查看错误信息tail-100ferror.log如何错误......
  • 随堂笔记5-spring依赖注入
    转载别人的图:依赖注入底层原理流程图:https://www.processon.com/view/link/5f899fa5f346fb06e1d8f570spring的依赖注入分为手动注入与自动注入手动注入xml指定属性......
  • Spring Cloud Alibaba与Spring Cloud Netflix区别
      SpringCloudAlibaba与SpringCloudNetflix区别SpringCloudAlibaba的由来:从2014年开始,得益于以Docker为代表的容器化技术的成熟以及DevO......