最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2021年05月26日 10:20:57   作者:java金融  
今天給大家介紹基于注解的Spring擴(kuò)展,Spring的Xml和JavaConfig 擴(kuò)展的配置方法,關(guān)于Spring的Xml和JavaConfig 擴(kuò)展你會(huì)選哪個(gè)呢,帶著這個(gè)問題一起通過本文學(xué)習(xí)下吧

引言

上一篇文章我們有怎么介紹到如何通過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)提供的例子:

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

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

<beans>
    <bean id="myService" class="cn.javajr.services.MyServiceImpl"/>
</beans>

@Bean

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

  1. 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屬性。
  2. initMethod:指定容器在初始化完bean后調(diào)用的方法。相當(dāng)于xml配置中的init-method屬性。
  3. destroyMethod:指定在容器在銷毀bean前調(diào)用的方法。相當(dāng)于xml配置中的 destroy-method。
  4. 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 {

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

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è)方法主要是對(duì)propties文件進(jìn)行解析并根據(jù)不同的配置
項(xiàng)生成對(duì)應(yīng)類型的Bean對(duì)象。

總結(jié)

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

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

相關(guān)文章

  • Java中枚舉類的用法示例詳解

    Java中枚舉類的用法示例詳解

    枚舉類型可以取代以往常量的定義方式,即將常量封裝在類或接口中。此外,枚舉類型還提供了安全檢查功能。本文就來和大家講講Java中枚舉類的用法,需要的可以參考一下
    2022-07-07
  • Struts2 $,#,%詳解及實(shí)例代碼

    Struts2 $,#,%詳解及實(shí)例代碼

    這篇文章主要介紹了Struts2 $,#,%詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • mybatis?查詢返回Map<String,Object>類型

    mybatis?查詢返回Map<String,Object>類型

    本文主要介紹了mybatis?查詢返回Map<String,Object>類型,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Java 初識(shí)CRM之項(xiàng)目思路解析

    Java 初識(shí)CRM之項(xiàng)目思路解析

    本篇文章意在幫助大家了解CRM的一些基本概念,介紹相關(guān)業(yè)務(wù),后文也將會(huì)將基于筆者所在公司的業(yè)務(wù)詳細(xì)闡述CRM各模塊,感興趣的朋友快來看看吧
    2021-11-11
  • SpringMVC前端和后端數(shù)據(jù)交互總結(jié)

    SpringMVC前端和后端數(shù)據(jù)交互總結(jié)

    本篇文章主要介紹了SpringMVC前端和后端數(shù)據(jù)交互總結(jié),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • 詳解Java遞歸實(shí)現(xiàn)樹形結(jié)構(gòu)的兩種方式

    詳解Java遞歸實(shí)現(xiàn)樹形結(jié)構(gòu)的兩種方式

    在開發(fā)的過程中,很多業(yè)務(wù)場(chǎng)景需要一個(gè)樹形結(jié)構(gòu)的結(jié)果集進(jìn)行前端展示,也可以理解為是一個(gè)無限父子結(jié)構(gòu),常見的有報(bào)表指標(biāo)結(jié)構(gòu)、菜單結(jié)構(gòu)等,這篇文章主要介紹了Java遞歸實(shí)現(xiàn)樹形結(jié)構(gòu)的兩種方式,需要的朋友可以參考下
    2022-10-10
  • 分析講解Java?Random類里的種子問題

    分析講解Java?Random類里的種子問題

    Random類中實(shí)現(xiàn)的隨機(jī)算法是偽隨機(jī),也就是有規(guī)則的隨機(jī)。在進(jìn)行隨機(jī)時(shí),隨機(jī)算法的起源數(shù)字稱為種子數(shù)(seed),在種子數(shù)的基礎(chǔ)上進(jìn)行一定的變換,從而產(chǎn)生需要的隨機(jī)數(shù)字
    2022-05-05
  • SpringBoot集成redis與session實(shí)現(xiàn)分布式單點(diǎn)登錄

    SpringBoot集成redis與session實(shí)現(xiàn)分布式單點(diǎn)登錄

    這篇文章主要介紹了SpringBoot集成redis與session實(shí)現(xiàn)分布式單點(diǎn)登錄,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • springboot?使用mybatis查詢的示例代碼

    springboot?使用mybatis查詢的示例代碼

    這篇文章主要介紹了springboot?使用mybatis查詢功能,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • Java中的CAS和自旋鎖詳解

    Java中的CAS和自旋鎖詳解

    這篇文章主要介紹了Java中的CAS和自旋鎖詳解,CAS算法(Compare And Swap),即比較并替換,是一種實(shí)現(xiàn)并發(fā)編程時(shí)常用到的算法,Java并發(fā)包中的很多類都使用了CAS算法,需要的朋友可以參考下
    2023-10-10

最新評(píng)論

桂阳县| 兴化市| 通许县| 霞浦县| 保山市| 阿克陶县| 社旗县| 三台县| 佛山市| 苗栗县| 紫阳县| 毕节市| 辉县市| 新河县| 台南市| 湘潭县| 阜平县| 沧州市| 河南省| 三都| 蒙城县| 华亭县| 建始县| 商南县| 苗栗市| 普安县| 翁源县| 安远县| 丹巴县| 昂仁县| 什邡市| 万盛区| 囊谦县| 景谷| 石屏县| 双柏县| 五莲县| 通山县| 阜城县| 新平| 长寿区|