中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring的Xml和JavaConfig擴展哪個比較好

發布時間:2021-05-27 11:26:55 來源:億速云 閱讀:184 作者:小新 欄目:開發技術

小編給大家分享一下Spring的Xml和JavaConfig擴展哪個比較好,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

JavaConfig 配置擴展

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

@Configuration

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

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

這個定義的JavaConfig就相當于原來如下XML的配置:

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

@Bean

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

  1. name:指定一個或者多個bean的名字,當沒有設置name時,Spring容器會默認將@Bean方法名作為bean name,當設置了name后,就不會再使用方法名,同時設置多個name時,除第一個name外,其他的都會作為bean的別名。相當于xml配置中的name屬性。

  2. initMethod:指定容器在初始化完bean后調用的方法。相當于xml配置中的init-method屬性。

  3. destroyMethod:指定在容器在銷毀bean前調用的方法。相當于xml配置中的 destroy-method。

  4. autowire:指定bean在自動裝配時依賴注入使用的策略,取值可以參考Enum類Autowire 的三個常量:Autowire.BY_NAME,Autowire.BY_TYPE,Autowire.NO。

@Import

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

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

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

Dubbo的JavaConfig

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

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

@Configuration這個注解我們上面已經介紹過了,我們重點看下@EnableDubbo這個注解
@EnableDubbo 其實又是@EnableDubboConfig @DubboComponentScan是通過這兩個組合注解來實現的,
@EnableDubboConfig注解實現如下:

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

這個注解使用了@Import(DubboConfigConfigurationRegistrar.class) 所以Spring 在處理
@EnableDubboConfig 注解 的時候就會去實例化DubboConfigConfigurationRegistrar
并且調用它的registerBeanDefinitions方法,這個方法主要是對propties文件進行解析并根據不同的配置
項生成對應類型的Bean對象。

總結

  • 通過基于XML和基于Java的配置擴展,可以使用戶通過Spring使用我們研發的組件,提供很好的易用性。

  • 雖然現在大多數都是采用JavaConfig這種方式了,但是還是有人會比較喜歡xml這種方式

  • xml可以讓配置集中化,所有的組件并不是分散的,因此使你對beans有一個很好的概覽,比如mybais配置文件、SpingMvc配置文件,都放在一起,如果你需要分割文件,Spring可以幫你實現。然后(Spring)會通過內部標簽進行重新組合或者外部上下文文件進行聚合。

  • xml和JavaConfig 當然也是可以混合使用的,至于使用哪種方式還是看個人的編程習慣,沒有哪種方式是絕對的好,各有千秋。

以上是“Spring的Xml和JavaConfig擴展哪個比較好”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

绥中县| 建水县| 区。| 长海县| 拉孜县| 屏南县| 安新县| 崇左市| 江山市| 伽师县| 闽清县| 乐都县| 交城县| 隆回县| 雷波县| 当雄县| 读书| 奉贤区| 郓城县| 岳阳市| 黄冈市| 炉霍县| 博爱县| 南丹县| 仁化县| 宁津县| 文安县| 金沙县| 仙游县| 合作市| 夏津县| 南和县| 蕲春县| 冀州市| 项城市| 九台市| 金寨县| 信宜市| 乌兰察布市| 丰宁| 姚安县|