본문 바로가기

자바/스프링

Spring Bean 설정(XML)

1. context:component-scan

 - base-package : @Controller, @Component, @Service, @Repository 어노테이션을 가진 클래스들을 빈으로 등록하기 위해 탐색 할 최상위 패키지

 - use-default-filters : true이면 exclude-filter를 통해 선언 된 어노테이션을 제외하고 등록 exclude-filter가 없으면 4개의 어노테이션을 모두 등록, false이면 아래 include-filter를 통해 선언 된 어노테이션만 등록(default = true)

 - context:include-filter : @Controller, @Component, @Service, @Repository 중 등록하고 싶은 어노테이션만 지정해서 등록

 <context:component-scan base-package="com.xxx.project" use-default-filters="false">
  <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
 </context:component-scan>

 

2. mvc:annotation-driven
 - 아래의 설정과 동일한 동작을 함

<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" />
 
<!-- jaxb2라이브러리 존재시 -->
<bean class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter" />
 
<!-- jackson 라이브러리 존재시 -->
<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" />

 

해당 설정에 argument-resolvers를 넣게 되면 controller에 전달인자로 받을 수 있는 객체가 등록 됨

 <mvc:annotation-driven>
  <mvc:argument-resolvers>
   <bean class="com.xxx.project.resolver.TestArgumentResolver"/>
  </mvc:argument-resolvers>
 </mvc:annotation-driven>

 

3. mvc:resources

 - web home 아래 경로를 지정하면 jsp에서 가져다 쓸 수 있음

 <mvc:resources mapping="/resource/image/**" location="/image/"/>

 

4. mvc:interceptors

 - mapping 경로에 들어가기 전 수행할 interceptor를 선언

 <mvc:interceptors>
  <mvc:interceptor>
   <mvc:mapping path="/**/*.do"/>
   <bean class="com.xxx.project.interceptor.TestInterceptor"/>
  </mvc:interceptor>
 </mvc:interceptors>

 

5. bean 등록

 <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
  <property name="messageConverters">
   <list>
    <ref bean="jsonMessageConverter"/>
   </list>
  </property>
 </bean>

 

 <bean id="jsonMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>


 <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
  <property name="prefix" value="/WEB-INF/jsp/"/>
  <property name="suffix" value=".jsp"/>
 </bean>

 

6. view-controller

 - 해당 경로로 들어올 경우 이동할 view를 mapping 해 줌

<mvc:view-controller path="/" view-name="index"/>

 

* servlet-context에서 사용하는 것 위주로 작성.

 applcation-context에는 service, dao를 지원하기 위한 aop, cache, properties 설정 등 필요한 걸 추가해서 사용하자!!

'자바 > 스프링' 카테고리의 다른 글

Spring Bean Scope  (0) 2019.04.04
Spring AOP  (0) 2019.04.01
Spring Transaction  (0) 2019.03.15
IoC(Inversion of Controll) - 제어의 역전  (0) 2019.02.13
DispatcherServlet  (0) 2019.02.11