스프링 설정 <mvc:annotation-driven/>이 구체적으로 뭘까?

오랜만에...라고 하기엔 정말 오랫동안 블로그에 글을 안 올렸는데 좌우간... 그렇게 오랫동안 안 올리다 올리는 글 치고는 손 안대고 코 푸는 수준의 글이지만 일단 다시 블로그질 좀 하려면 가볍게 시작하는 게 좋겠다는 생각이 들어서... 음...

암튼

스프링 3에 새로 추가된 mvc 네임 스페이스를 쓰면 아주 쉽게 @mvc xml 설정을 할 수는 있지만 속성을 변경할 수 없는 문제도 있다. 그래서 <mvc:annotation-driven>이 정확이 어떤 빈 설정을 의미하는지 찾아봤다.

소스 코드는 org.springframework.web.servlet.config.AnnotationDrivenBeanDefinitionParser.java 다.

결론은...

    <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
        <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" />

    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
        <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">
            <list>
                <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" />
                <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" />-->
<!--                <bean class="org.springframework.http.converter.feed.AtomFeedHttpMessageConverter" />-->
<!--                <bean class="org.springframework.http.converter.feed.RssChannelHttpMessageConverter" />-->
            </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>

    
위에 주석 처리한 컨버터는 해당 라이브러리가 클래스 경로에 있을 때 활성화 된다. 수작업으로 설정할 때는 판단도 수작업으로...

그리고 생소한 MappedInterceptor는 이일민님 블로그 참조.


Spring 3.0.1 mvc:annotation-driven 이 몰래 하는 짓


by 박성철 | 2010/11/04 19:27 | 미분류 | 트랙백(1) | 핑백(2) | 덧글(3)

트랙백 주소 : http://gyumee.egloos.com/tb/3056225
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Tracked from 현실과 상식의 차이 at 2012/04/19 13:26

제목 : Spring MVC 3.1 에서 달라진 &lt;mv..
기존 Spring MVC 3.0.x의 태그의 전략은 org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter 클래스를 사용하여 맵핑 및 여러 클래스를 추가하여 구성이 되었다. 하지만 이.....more

Linked at 스프링에서 RESTful 적용.. at 2011/10/01 17:05

... 마지막에 디폴트 서블릿 매핑이 잡혀서 잘 구동이 됐습니다. 이얏호! 그러다가 문뜩 생각난 &lt;mvc:annotation-driven/&gt; 구글링 해보니 박성철님의 스프링 설정 이 구체적으로 뭘까?란 포스트가 눈에 들어왔습니다. 읽어보니 @mvc 관련 핸들러, 어탭터를 등록해 주더라구요. 아까의 삽질을 상기 시키며 &lt;mvc:default-servlet- ... more

Linked at chips : &lt;mvc:.. at 2012/06/07 02:28

... ean&gt; 38: &lt;/constructor-arg&gt; 39: &lt;/bean&gt;일부 컨버터는 별도의 라이브러리가 있어야 작동한다. 출처 : http://gyumee.egloos.com/3056225 ... more

Commented by Outsider at 2010/11/05 11:37
와~ 거진 1년만에 글이네요 ㅎㅎㅎㅎㅎ
Commented by 박성철 at 2010/11/05 20:03
ㅋㅋㅋ 내게도 블로그가 있었다는 걸 까맣게 까먹...;;
Commented at 2014/07/24 17:03
비공개 덧글입니다.

:         :

:

비공개 덧글

◀ 이전 페이지다음 페이지 ▶