Spring-不同配置方式的比较

举报
小工匠 发表于 2021/09/09 23:25:37 2021/09/09
【摘要】 概述Bean不同配置方式比较Bean不同配置方式的使用场景 基于XML配置基于注解配置基于Java类配置基于Groovy的配置 总结 概述 对于Spring来讲,为...

概述

对于Spring来讲,为实现Bean的信息定义,提供了基于XML、基于注解、基于JAVA类、基于Groovy这4种选项,同事还允许各种配置方式复合共存。

Bean不同配置方式比较

类别 基于XML配置 基于注解配置 基于Java类配置 基于Groovy DSL配置
Bean定义 在XML文件中通过<bean>元素定义Bean,如:<bean class="com.xgj.UserDao"/> 在Bean实现类处通过标注@Component或衍型类@Repository、@Service及@Controller定义Bean 在标注了@Configuration的Java类中,通过在类方法上标注@Bean定义一个Bean。方法必须提供Bean的实例化逻辑 在Groovy 文件中通过DSL定义Bean的名称 ,如 userDao(UserDao)
Bean名称 通过<bean>的id或name属性定义,如:<bean id="userDao" class="com.xgj.UserDao"/> 默认名称为:com.xgj.userDao#0 通过注解的value属性定义,如@Component(“userDao”)。默认名称为小写字母打头的类名(不带包名):userDao 通过@Bean的name属性定义,如@Bean(“userDao”),默认名称为方法名 通过GroovyDSL定义Bean的名称
Bean注入 通过<property>子元素或通过p命名空间的动态属性,如p:userDao-ref=”userDao”进行注入 通过在成员变量或方法入参处标注@Autowired,按类型匹配自动注入。还可以配合使用@Qualifier按名称匹配方式注入 比较灵活,可以通过在方法处通过@Autowired方法入参绑定Bean,然后在方法中通过代码进行注入,还可以通过调用配置类的@Bean方法进行注入 比较灵活,可以在方法出通过ref()方法进行注入,如ref(“logDao”)
Bean生命过程方法 通过<bean>的init-method和destory-method属性指定Bean实现类的方法名。最多只能指定一个初始化方法和一个销毁方法。 通过在目标方法上标注@PostConstruct和@PreDestroy注解指定初始化或销毁方法,可以定义任意多个方法 通过@Bean的initMethod或destoryMethod指定一个初始化或销毁方法.对于初始化方法来说,你可以直接在方法内部通过代码的方式灵活定义初始化逻辑 通过bean->bean,initMehtod或者bean.destoryMethod指定一个初始化或者销毁方法
Bean作用范围 通过<bean>的scope属性指定,如:<bean class="com.xgj.UserDao" scope="prototype"/> 通过在类定义处标注@Scope指定,如@Scope(“prototype”) 通过在Bean方法定义处标注@Scope指定 通过bean->bean,scope=”prototype”指定
Bean延迟初始化 通过<bean>的lazy-init属性指定,默认为default,继承于的default-lazy-init设置,该值默认为false 通过在类定义处标注@Lazy指定,如@Lazy(true) 通过在Bean方法定义处标注@Lazy指定 通过bean->bean.lazyInit-true指定

Bean不同配置方式的使用场景

基于XML配置

  • 1)Bean实现类来源于第三方类库,如DataSource,JdbcTemplate等,因无法在类中标注注解,通过XML配置方式较好;

  • 2)命名空间的配置,如aop、context等,只能采用基于XML的配置


基于注解配置

Bean的实现类是当前项目开发的,可以直接在Java类中使用基于注解的配置


基于Java类配置

基于Java类配置的优势在于可以通过代码方式控制Bean初始化的整体逻辑。所以如果实例化Bean的逻辑比较复杂,则比较适合用基于Java类配置的方式


基于Groovy的配置

基于Groovy DSL配置优势在于可以通过Groovy脚本灵活控制Bean初始化的过程, 如果bean的逻辑较为复杂,则比较适合使用Groovy DSL配置的方式。


总结

综上所述,我们一般采用XML配置DataSource、SessionFactory等资源Bean,在XML中利用aop 和 context等命名空间进行相关主题的配置,其他所有项目中开发的bean 都通过基于注解配置的方式进行配置,即这个项目采用“基于XML+基于注解”的配置方式,很少采用基于JAVA类的配置方式。

文章来源: artisan.blog.csdn.net,作者:小小工匠,版权归原作者所有,如需转载,请联系作者。

原文链接:artisan.blog.csdn.net/article/details/76742165

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。