簡體   English   中英

這兩個Spring Annotation和XML配置有什么區別

[英]What is difference between these 2 Spring Annotation and XML config

這兩個Spring Annotation和XML配置有什么區別

1)基於注釋

@Configuration
@EnableWebMvc
public class MyWebConfig{
   // 
}

2)基於XML

<mvc:annotation-driven />

我看不出除xml和注釋之外的任何其他區別。 什么時候使用哪一個?

基於注釋的配置比xml中的等效配置更容易,更易讀。 例如,在xml中將屬性設置為map,如下所示:

    <property name="maps">
        <map>
            <entry key="Key 1" value="1" />
            <entry key="Key 2" value-ref="PersonBean" />
            <entry key="Key 3">
                <bean class="com.mkyong.common.Person">
                    <property name="name" value="mkyongMap" />
                    <property name="address" value="address" />
                    <property name="age" value="28" />
                </bean>
            </entry>
        </map>
    </property>

在java配置文件中,它看起來像這樣:

Map<String, Object> maps = ...
maps.put()...
....setMaps(maps);

還有很多其他優點:

  • 從匿名內部類型的實例添加bean

  • 在開始Spring上下文和tomcat之前,請在編譯期間查看錯誤...

  • 在bean構造中添加一些條件

例如:

@Bean
public ViewResolver internalResourceViewResolver() {
    ClassLoader classLoader = getClass().getClassLoader();
    if (ClassUtils.isPresent("org.apache.tiles.TilesContainer", classLoader)) {
        TilesViewResolver viewResolver = new TilesViewResolver();
        return viewResolver;
    } else {
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setPrefix("/");
        viewResolver.setSuffix(".jsp");         
        return viewResolver;
    }
}
  • 很多其他的....

@Treydone寫了一些例子,並表達了關於基於Java的配置更好的主觀意見。

我不同意這種說法,因為基於Java的配置和XML配置之間沒有功能差異,你只會習慣使用哪一個。 有人說傳統的XML命名空間配置更好,其他人說基於Java的配置(從3.0開始是Spring)是Spring的下一級IoC。

BTW基於注解配置的是不一樣的基於Java的一個-你從后者寫道例子,所以我假設你是XML和Java之間CONFIGS選擇。

我想你應該讀:

然后決定哪一個最適合你。

基於PS注釋的配置是IMO比這兩者更糟的選擇,因為它將一些依賴信息直接移動到普通類中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM