这两个Spring Annotation和XML配置有什么不同
1)基于注解
@Configuration
@EnableWebMvc
public class MyWebConfig{
//
}2)基于XML
<mvc:annotation-driven />除了xml和注解之外,我看不到任何其他的区别。什么时候使用哪一个?
发布于 2012-07-25 16:34:20
@Treydone写了一些例子,并表达了基于Java的配置更好的主观观点。
我不同意这种说法,因为基于Java的配置和XML配置在功能上没有区别,您将使用哪种配置只是个习惯问题。有人说传统的XML名称空间配置更好,也有人说基于Java的配置(从3.0开始就在Spring中)是IoC在Spring中的下一个层次。
顺便说一句,基于注释的配置与基于Java的配置不同--您是从后者编写的示例,所以我假设您是在和Java配置之间进行选择。
我认为你应该读一读:
有关Enabling MVC
博客文章的
然后再决定哪一个最适合你。
P.S.基于注释的配置比这两个配置更糟糕,因为它将一些依赖信息直接移动到普通类中。
发布于 2012-07-25 16:05:54
基于注释的配置比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
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;
}
}https://stackoverflow.com/questions/11644154
复制相似问题