본문 바로가기

프로그래밍/Spring

<mvc:annotation-driven> 태그 설정으로 올라오는 bean 태그 내용(3.1 버전용)

예전에 포스트 했던 내용중 <mvc:annotation-driven />을 Spring 환경설정 파일에 넣었을 경우 내부적으로 어떤 Bean 설정들이 되는지를 다뤘던 내용이 있었다. 그러나 Spring이 3.1 버전으로 바뀌면서 이 부분도 변화를 겪게 되어 이 부분에 대한 정리도 새로 하게 되었다. Spring이 3,0에서 3.1 버전으로 바뀌면서 Spring MVC에 변화가 생겼기에 이 부분에 변화가 생긴 것이다. 변화가 된 내용은 구글링 해보면 나오니 구글링 하기 바란다. 주석을 이용해서 약간의 설명을 추가해두었다. 주석을 읽어보길 바란다

 

<!-- Spring 3.1 mvc:annotation 정의 시작 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">
	<property name="order" value="0" />
</bean>

<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" />
<bean id="conversion-service" class="org.springframework.format.support.FormattingConversionServiceFactoryBean" />

<!-- <mvc:message-converters> 태그의 messageConverter와 통합 -->
<util:list id="messageConverters">
	<bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter" />
	<bean class="org.springframework.http.converter.StringHttpMessageConverter">
		<property name="writeAcceptCharset" value="false" />
	</bean>
	<bean class="org.springframework.http.converter.ResourceHttpMessageConverter" />
	<!-- 
	기존에 사용하는 org.springframework.http.converter.xml.SourceHttpMessageConverter 와
	org.springframework.http.converter.xml.XmlAwareFormHttpMessageConverter 와
	org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter 와
	org.springframework.http.converter.json.MappingJacksonHttpMessageConverter 는
	
	org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter를 사용함으로써
	동적으로 추가된다(AllEncompassingFormHttpMessageConverter 클래스 소스를 보면 SourceHttpMessageConverter 클래스는 필수로 들어가고
	나머지 3개의 클래스는 라이브러리 유무에 따라 동적으로 MessageConverter를 추가한다)
	 -->
	<bean class="org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter" />
	
	<!-- 
	<bean class="org.springframework.http.converter.xml.SourceHttpMessageConverter" />
	<bean class="org.springframework.http.converter.xml.XmlAwareFormHttpMessageConverter" />
	<bean class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter" />
	<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/>
	-->

	<!-- rome 라이브러리 존재시 -->
	<bean class="org.springframework.http.converter.feed.AtomFeedHttpMessageConverter" />
	<bean class="org.springframework.http.converter.feed.RssChannelHttpMessageConverter" />
</util:list>

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
	<property name="webBindingInitializer">
		<bean class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">
			<property name="validator" ref="validator" />
			<property name="conversionService" ref="conversion-service" />
		</bean>
	</property>
	<property name="messageConverters" ref="messageConverters"/>

	<!-- <mvc:argument-resolvers> 태그 존재시 -->
	<!--
	<property name="customArgumentResolvers">
		<util:list>
		</util:list>
	</property>
	-->
	
	<!-- <mvc:return-value-handlers> 태그 존재시 -->
	<!--
	<property name="customReturnValueHandlers">
		<util:list>
		</util:list>
	</property>
	-->
</bean>

<bean class="org.springframework.web.servlet.handler.MappedInterceptor">
	<constructor-arg index="0">
		<null />
	</constructor-arg>
	<constructor-arg index="1">
		<bean class="org.springframework.web.servlet.handler.ConversionServiceExposingInterceptor">
			<constructor-arg index="0" ref="conversion-service" />
		</bean>
	</constructor-arg>
</bean>

<bean class="org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver">
	<property name="messageConverters" ref="messageConverters"/>
	<property name="order" value="0"/>
</bean>

<bean class="org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver">
	<property name="order" value="1"/>
</bean>

<bean class="org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver">
	<property name="order" value="2"/>
</bean>

<!-- Spring 3.1 mvc:annotation 정의 끝 -->