首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这两个Spring Annotation和XML配置有什么不同

这两个Spring Annotation和XML配置有什么不同
EN

Stack Overflow用户
提问于 2012-07-25 14:51:17
回答 2查看 2.7K关注 0票数 0

这两个Spring Annotation和XML配置有什么不同

1)基于注解

代码语言:javascript
复制
@Configuration
@EnableWebMvc
public class MyWebConfig{
   // 
}

2)基于XML

代码语言:javascript
复制
<mvc:annotation-driven />

除了xml和注解之外,我看不到任何其他的区别。什么时候使用哪一个?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-25 16:34:20

@Treydone写了一些例子,并表达了基于Java的配置更好的主观观点。

我不同意这种说法,因为基于Java的配置和XML配置在功能上没有区别,您将使用哪种配置只是个习惯问题。有人说传统的XML名称空间配置更好,也有人说基于Java的配置(从3.0开始就在Spring中)是IoC在Spring中的下一个层次。

顺便说一句,基于注释的配置与基于Java的配置不同--您是从后者编写的示例,所以我假设您是在和Java配置之间进行选择。

我认为你应该读一读:

有关Enabling MVC

  • some和this

博客文章的

  • Java based config basic concepts参考手册:this和Spring

然后再决定哪一个最适合你。

P.S.基于注释的配置比这两个配置更糟糕,因为它将一些依赖信息直接移动到普通类中。

票数 1
EN

Stack Overflow用户

发布于 2012-07-25 16:05:54

基于注释的配置比xml中的等价物更容易构建,也更具可读性。例如,在xml中将属性设置为map如下所示:

代码语言:javascript
复制
    <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配置文件中,如下所示:

代码语言:javascript
复制
Map<String, Object> maps = ...
maps.put()...
....setMaps(maps);

还有许多其他优点:

  • 从匿名内部类型的实例添加bean
  • 在启动Spring上下文和tomcat之前,请查看编译过程中的错误...
  • 在bean构造

中添加一些条件

例如:

代码语言:javascript
复制
@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;
    }
}

  • 许多其他....
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11644154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档