国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

Spring的Xml和JavaConfig 擴(kuò)展哪個(gè)好用

瀏覽:58日期:2023-07-14 08:28:21
引言

上一篇文章我們有怎么介紹到如何通過XML的形式來定義Spring的擴(kuò)展《Spring面試高頻題如何:自定義XML schema 擴(kuò)展》,好多人都在吐槽現(xiàn)在都什么年代了,xml還有人再用嗎?這玩意早就過時(shí)了吧,還有必要去掌握它嗎?Spring官網(wǎng)都把這種方式放在最后面了,可想而知它的重要性到底怎樣了?既然大家都吐槽了,那我們今天繼續(xù)來介紹下基于注解的Spring擴(kuò)展。

JavaConfig 配置擴(kuò)展

從Spring3.0開始Spring提供了JavaConfig的方式可以用來代替以前XML的這種方式,原來在XML配置里的都可以通過注解來一一替換實(shí)現(xiàn)。主要通過@Configuration,@Bean, @Import,和@DependsOn這幾個(gè)注解來搭配實(shí)現(xiàn)的。這種方式也是SpringBoot所使用的。

@Configuration

@Configuration只能標(biāo)記在類上,表示該類為JavaConfig類,使其可以被Spring IOC容器掃描識(shí)別并創(chuàng)建Bean加入到容器中。@Configuration類就相當(dāng)于以往的一個(gè)xml文件。下面我們看一個(gè)官網(wǎng)提供的例子:

@Configurationpublic class AppConfig { @Bean public MyService myService() {return new MyServiceImpl(); }

這個(gè)定義的JavaConfig就相當(dāng)于原來如下XML的配置:

<beans> <bean /></beans>

@Bean

@Bean只能被標(biāo)記在方法上,表示該方法返回一個(gè)Spring Bean,可以被IOC容器托管,相當(dāng)于以前在xml文件中寫的元素。

name:指定一個(gè)或者多個(gè)bean的名字,當(dāng)沒有設(shè)置name時(shí),Spring容器會(huì)默認(rèn)將@Bean方法名作為bean name,當(dāng)設(shè)置了name后,就不會(huì)再使用方法名,同時(shí)設(shè)置多個(gè)name時(shí),除第一個(gè)name外,其他的都會(huì)作為bean的別名。相當(dāng)于xml配置中的name屬性。 initMethod:指定容器在初始化完bean后調(diào)用的方法。相當(dāng)于xml配置中的init-method屬性。 destroyMethod:指定在容器在銷毀bean前調(diào)用的方法。相當(dāng)于xml配置中的 destroy-method。 autowire:指定bean在自動(dòng)裝配時(shí)依賴注入使用的策略,取值可以參考Enum類Autowire 的三個(gè)常量:Autowire.BY_NAME,Autowire.BY_TYPE,Autowire.NO。

@Import

XML配置中的標(biāo)簽,基于JavaConfig提供了@Import來組合模塊化的配置類,使用方式如下所示:

@Configuration() @Import({ApplicationContextConfig.class}) public class ApplicationContextConfig {

上面就比較簡單的介紹了幾種通過JavaConfig注解來替換XML形式的注解,使用起來還是非常簡單的,如果你有對以前的XML配置文件都比較了解的話,使用JavaConfig就更加簡單方便了。

Dubbo的JavaConfig

上篇文章我們介紹了dubbo通過XML的方式自定義擴(kuò)展,今天我們就接著看看dubbo是如何通過JavaConfig來替代XML形式的擴(kuò)展的。我們看看dubbo的服務(wù)提供者是如何通過注解來實(shí)現(xiàn)的

@Configuration@EnableDubbo(scanBasePackages = 'org.apache.dubbo.samples.annotation.impl')@PropertySource('classpath:/spring/dubbo-provider.properties')static class ProviderConfiguration {}

@Configuration這個(gè)注解我們上面已經(jīng)介紹過了,我們重點(diǎn)看下@EnableDubbo這個(gè)注解@EnableDubbo 其實(shí)又是@EnableDubboConfig @DubboComponentScan是通過這兩個(gè)組合注解來實(shí)現(xiàn)的,@EnableDubboConfig注解實(shí)現(xiàn)如下:

@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Inherited@Documented@Import(DubboConfigConfigurationRegistrar.class)public @interface EnableDubboConfig {

這個(gè)注解使用了@Import(DubboConfigConfigurationRegistrar.class) 所以Spring 在處理@EnableDubboConfig 注解 的時(shí)候就會(huì)去實(shí)例化DubboConfigConfigurationRegistrar并且調(diào)用它的registerBeanDefinitions方法,這個(gè)方法主要是對propties文件進(jìn)行解析并根據(jù)不同的配置項(xiàng)生成對應(yīng)類型的Bean對象。

總結(jié) 通過基于XML和基于Java的配置擴(kuò)展,可以使用戶通過Spring使用我們研發(fā)的組件,提供很好的易用性。 雖然現(xiàn)在大多數(shù)都是采用JavaConfig這種方式了,但是還是有人會(huì)比較喜歡xml這種方式 xml可以讓配置集中化,所有的組件并不是分散的,因此使你對beans有一個(gè)很好的概覽,比如mybais配置文件、SpingMvc配置文件,都放在一起,如果你需要分割文件,Spring可以幫你實(shí)現(xiàn)。然后(Spring)會(huì)通過內(nèi)部標(biāo)簽進(jìn)行重新組合或者外部上下文文件進(jìn)行聚合。 xml和JavaConfig 當(dāng)然也是可以混合使用的,至于使用哪種方式還是看個(gè)人的編程習(xí)慣,沒有哪種方式是絕對的好,各有千秋。 看完這兩篇關(guān)于不同方式Spring的 擴(kuò)展我們是不是可以自己動(dòng)手去實(shí)現(xiàn)一個(gè)了。

以上就是Spring的Xml和JavaConfig 擴(kuò)展哪個(gè)好的詳細(xì)內(nèi)容,更多關(guān)于Spring的Xml和JavaConfig 擴(kuò)展的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 黄色美女网站免费 | 中国一级毛片免费观看 | 91精品久久一区二区三区 | 欧美国产在线看 | 久久性生大片免费观看性 | 亚洲黄视频在线观看 | 热伊人99re久久精品最新地 | 国产免费爽爽视频免费可以看 | 99精品久久久久久久免费看蜜月 | 欧美日韩高清不卡一区二区三区 | 欧美一级毛片在线观看 | 亚洲视频中文 | 在线观看亚洲精品专区 | 草久在线观看视频 | 国产激情视频在线 | 国产午夜免费福利红片 | 正在播放亚洲一区 | 久草视频网 | 亚洲激情欧美 | 2021国产精品一区二区在线 | 欧美成人精品高清在线观看 | 国产一区亚洲 | 成人网在线免费观看 | 亚洲精品手机在线观看 | 暖暖日本在线播放 | 国产大片一区 | 波多野结衣视频在线观看地址免费 | a级国产乱理伦片在线观看99 | 国产成人啪精品视频免费软件 | 国产看色免费 | 杨晨晨福利视频 | 深夜爽爽爽gif福利免费 | 国产成人在线影院 | 欧美一级在线免费观看 | 91成人在线视频 | 三级高清| 国产精品久久网 | 一区精品麻豆经典 | 久久久久久久久国产 | 91原创视频在线观看 | 亚洲精品国产高清不卡在线 |