以前の構成はコードでハードコーディングされていましたが、後で.propertyファイルに外部化され(ハードコーディングされた値を回避するため、構成を変更するためにコードを変更することを回避するなど)、XMLに移動しました(より標準化されているため、エラーがありません。
さて、Spring 3の@Configurationについて読んでいると、再び最初のアプローチに戻っているようです。
構成を外部化するのではなく、コード内でハードコーディングする必要があるのはなぜですか?
Spring 5 reference によると
XMLベースのメタデータだけが、構成メタデータの許可された形式ではありません。 Spring IoCコンテナー自体は、この構成メタデータが実際に書き込まれる形式から完全に切り離されています。最近では、多くの開発者がSpringアプリケーションにJavaベースの構成を選択しています。
今日、人々はJavaベースの設定に向かっている
例:xmlのSpring web-mvc config
<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="hms.controller" />
<context:component-scan base-package="dao" />
<context:component-scan base-package="hms.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("hms.controller"),
@ComponentScan("dao"),
@ComponentScan("hms.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について知る必要はありません。