栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java > SpringBoot

浅谈Spring JavaConfig

SpringBoot 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

浅谈Spring JavaConfig

之前一直都是使用xml以及@bean之类的注解的来配置spring容器中的bean,前几天看springboot的启动原理接触到@configuration以及javaconfig,今天抽空了解了下。

Javaconfig是在spring3中引入的,利用的是java5中的注解方式,提供了一种纯java代码的方式来配置bean。

为什么spring要新增一种方式来配置bean呢,相对xml配置的方式Javaconfig可以具有哪些优势呢,由于实现的方式是注解,那我们来看看java为什么要引入注解。

先来看注解的作用是什么,注解是用来对代码进行描述,也就是我们常常说的元数据。其中有些是给开发者看的或者是IDE使用的,有些是需要代码运行时根据这些数据来定制逻辑的; 例如Deprecated,如果这里只是用来提示开发人员这个类被废弃了,那我们用注释就好了,如果是给IDE来使用,那就与那些运行时需要的数据类似,都是作为代码的配置数据,如果没有注解,我们可以通过其他配置文件的方式来对代码进行说明,比如我想要实现Deprecated的功能,那就需要新建一个deprecated.properties的文件,将所有废弃的类放进来,IDE就可以读取这些数据,然后对相应的类进行标识了。有了注解之后,我们可以很方便的实现这个功能,而且配置跟代码放在一起,也更方便阅读。注解往往是一个概念或者定义,而代码就是需要去修饰的主体,类似一个形容词来修饰一个定语一样,放在一起才能形成一个完整的场景

那是不是javaconfig的好处就是方便bean配置的功能开发与方便阅读呢,我觉得不是,对于第一点,由于xml方式的配置是已有的功能,并不是新功能开发,那对于以后增加新的概念(xml的标签或者新的注解),可能在两者之间开发量存在差异,但也并不大,因为spring bean的配置xml schema已经有很好的拓展机制了。对于第二点,方便阅读来说的话,由于javaconfig的注解并不是用来修饰已有的功能类,而只是一个用来专门放置配置信息的类,其实并没有起到修饰场景的好处。

那究竟为什么要引入javaconfig呢,官方文档给出的理由是

1. javaconfig使用纯java代码的方式,可以充分利用复用、继承、多态等特性

2. 有更多的自由度来控制bean的初始化,注入以及复杂对象的构建

3. 由于只用到java,只需有IDE就可以尽情的掌控配置逻辑

上面的理由1跟理由2比较有说服力,因为3的话其它IDE基本对xml支持也很好,而且基本都会安装spring xml的插件,也都具有提示,校验,自动补全等功能。

选择javaconfig的最重要原因是Bean的配置是通过Java来完成的,除了容器配置能力之外,有了更多的自由度,可以充分利用java的所有功能,而无需依赖容器提供的能力。与xml之间的一些差异,例如查询方便,集中管理等受每个人使用习惯会有差异,但问题都不大。

例如,如果想要实现一个多态的bean配置方式,Javaconfig可以如下实现


抽象类

利用多态配置bean



作者:真海
链接:https://www.jianshu.com/p/b54d564efe57


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/235585.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号