JavaConfig 相对于 Spring 中的 XML 配置的优势?
Benefits of JavaConfig over XML configurations in Spring?
早期的配置是硬编码在代码中,后来它被外部化到.属性文件(为了避免硬编码值,避免为了改变配置而改变代码..等)然后它移动到XML(为了更加标准化,无错误..等)
现在,在阅读 Spring 3 中的 @Configuration 时,看起来我们又回到了最初的方法。
Why would we want to hard-code configurations in the code rather than
having it externalized ?
有一些优点
- Java 是类型安全的。如果您是,编译器将报告问题
配置正确的 bean class 限定符。
- XML基于配置可以快速变大。 [是的,我们可以分开
并导入但仍然]
- 搜索更简单,重构将是幸福的。寻找一颗豆子
定义会容易得多。
还有人喜欢XML配置,继续做。
给出了正确答案,除了那个答案,我再给一分
XML-based metadata is not the only allowed form of configuration
metadata. The Spring IoC container itself is totally decoupled from
the format in which this configuration metadata is actually written.
These days many developers choose Java-based configuration for their
Spring applications.
这意味着如今,人们正在转向基于 java 的配置
例如:Spring xml
中的 web-mvc 配置
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
<context:component-scan base-package="controller" />
<context:component-scan base-package="dao" />
<context:component-scan base-package="service" />
<mvc:annotation-driven />
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix">
<value>/WEB-INF/pages/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
</beans>
和基于 java 样式的相同配置
@Configuration
@EnableWebMvc
@ComponentScans({
@ComponentScan("controller"),
@ComponentScan("dao"),
@ComponentScan("service")
})
public class WebMVCConfig implements WebMvcConfigurer {
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setViewClass(JstlView.class);
viewResolver.setPrefix("/WEB-INF/pages/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
}
什么容易理解?显然,基于Java的配置很容易理解。
写代码的人和其他人比XML更容易理解java代码。如果您只知道 Java.
,则无需了解 XML
早期的配置是硬编码在代码中,后来它被外部化到.属性文件(为了避免硬编码值,避免为了改变配置而改变代码..等)然后它移动到XML(为了更加标准化,无错误..等)
现在,在阅读 Spring 3 中的 @Configuration 时,看起来我们又回到了最初的方法。
Why would we want to hard-code configurations in the code rather than having it externalized ?
有一些优点
- Java 是类型安全的。如果您是,编译器将报告问题 配置正确的 bean class 限定符。
- XML基于配置可以快速变大。 [是的,我们可以分开 并导入但仍然]
- 搜索更简单,重构将是幸福的。寻找一颗豆子 定义会容易得多。
还有人喜欢XML配置,继续做。
给出了正确答案
XML-based metadata is not the only allowed form of configuration metadata. The Spring IoC container itself is totally decoupled from the format in which this configuration metadata is actually written. These days many developers choose Java-based configuration for their Spring applications.
这意味着如今,人们正在转向基于 java 的配置
例如:Spring xml
中的 web-mvc 配置<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
<context:component-scan base-package="controller" />
<context:component-scan base-package="dao" />
<context:component-scan base-package="service" />
<mvc:annotation-driven />
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix">
<value>/WEB-INF/pages/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
</beans>
和基于 java 样式的相同配置
@Configuration
@EnableWebMvc
@ComponentScans({
@ComponentScan("controller"),
@ComponentScan("dao"),
@ComponentScan("service")
})
public class WebMVCConfig implements WebMvcConfigurer {
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setViewClass(JstlView.class);
viewResolver.setPrefix("/WEB-INF/pages/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
}
什么容易理解?显然,基于Java的配置很容易理解。
写代码的人和其他人比XML更容易理解java代码。如果您只知道 Java.
,则无需了解 XML