Spring的Xml和JavaConfig 擴展哪個好用
上一篇文章我們有怎么介紹到如何通過XML的形式來定義Spring的擴展《Spring面試高頻題如何:自定義XML schema 擴展》,好多人都在吐槽現在都什么年代了,xml還有人再用嗎?這玩意早就過時了吧,還有必要去掌握它嗎?Spring官網都把這種方式放在最后面了,可想而知它的重要性到底怎樣了?既然大家都吐槽了,那我們今天繼續來介紹下基于注解的Spring擴展。
JavaConfig 配置擴展從Spring3.0開始Spring提供了JavaConfig的方式可以用來代替以前XML的這種方式,原來在XML配置里的都可以通過注解來一一替換實現。主要通過@Configuration,@Bean, @Import,和@DependsOn這幾個注解來搭配實現的。這種方式也是SpringBoot所使用的。
@Configuration
@Configuration只能標記在類上,表示該類為JavaConfig類,使其可以被Spring IOC容器掃描識別并創建Bean加入到容器中。@Configuration類就相當于以往的一個xml文件。下面我們看一個官網提供的例子:
@Configurationpublic class AppConfig { @Bean public MyService myService() {return new MyServiceImpl(); }
這個定義的JavaConfig就相當于原來如下XML的配置:
<beans> <bean /></beans>
@Bean
@Bean只能被標記在方法上,表示該方法返回一個Spring Bean,可以被IOC容器托管,相當于以前在xml文件中寫的元素。
name:指定一個或者多個bean的名字,當沒有設置name時,Spring容器會默認將@Bean方法名作為bean name,當設置了name后,就不會再使用方法名,同時設置多個name時,除第一個name外,其他的都會作為bean的別名。相當于xml配置中的name屬性。 initMethod:指定容器在初始化完bean后調用的方法。相當于xml配置中的init-method屬性。 destroyMethod:指定在容器在銷毀bean前調用的方法。相當于xml配置中的 destroy-method。 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的 擴展我們是不是可以自己動手去實現一個了。以上就是Spring的Xml和JavaConfig 擴展哪個好的詳細內容,更多關于Spring的Xml和JavaConfig 擴展的資料請關注好吧啦網其它相關文章!
相關文章:
1. python軟件測試Jmeter性能測試JDBC Request(結合數據庫)的使用詳解2. 利用FastReport傳遞圖片參數在報表上展示簽名信息的實現方法3. AJAX實現省市縣三級聯動效果4. ASP.NET MVC視圖頁使用jQuery傳遞異步數據的幾種方式詳解5. python用700行代碼實現http客戶端6. react axios 跨域訪問一個或多個域名問題7. ASP.NET MVC通過勾選checkbox更改select的內容8. 詳解php如何合并身份證正反面圖片為一張圖片9. XHTML 1.0:標記新的開端10. 如何基于Python和Flask編寫Prometheus監控
