Class GlueWebAutoConfiguration

java.lang.Object
com.poscoict.glueframework.boot.GlueWebAutoConfiguration

@AutoConfiguration @ConditionalOnWebApplication @ConditionalOnClass({org.springframework.web.servlet.DispatcherServlet.class,GlueSimpleController.class}) @AutoConfigureAfter(GlueCoreAutoConfiguration.class) @EnableConfigurationProperties(GlueWebProperties.class) public class GlueWebAutoConfiguration extends Object
Glue Web MVC Auto-configuration.

기존 web.xml, dispatcher-servlet.xml, dispatcher-json-servlet.xml을 Java Config로 대체한다. Spring Boot 웹 환경에서 DispatcherServlet이 존재하면 자동으로 활성화된다. jsonView 생성시 spring boot 에서 BeanNameViewResolver 등록함.

자동 등록 Bean:

`
  • glueSimpleController - JSP 뷰 응답용 GlueSimpleController
  • glueJsonController - JSON 응답용 GlueJsonController
  • glueUrlHandlerMapping - URL 패턴 → 컨트롤러 매핑
  • jsonView - JacksonJsonView (JSON 뷰)
  • beanNameViewResolver - Bean 이름 기반 ViewResolver
  • lazyTransactionReleaseFilter - GlueLazyTransactionReleaseFilter (필터 Bean)
  • restfulController - RESTful GlueService 컨트롤러

application.properties 설정:

 # MVC 컨트롤러 URL 패턴 (기본값: *.mvc)
 glue.web.mvc.url-pattern=*.mvc

 # JSP 경로
 spring.mvc.view.prefix=/springmvc/
 spring.mvc.view.suffix=.jsp

 # JSON 컨트롤러 URL 패턴 (기본값: *.json)
 glue.web.json.url-pattern=*.json

 # EAI HttpReceiver Servlet 활성화 여부 (기본값: false)
 glue.web.http-receiver.enabled=true
 glue.web.http-receiver.url-pattern=*.tc
 

기존 XML 방식 (web.xml + dispatcher-servlet.xml + dispatcher-json-servlet.xml):


 <!-- web.xml -->
 <filter>
     <filter-class>com.poscoict.glueframework.web.GlueCharacterEncodingFilter</filter-class>
 </filter>
 <servlet>
     <servlet-name>dispatcher</servlet-name>
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
 </servlet>

 <!-- dispatcher-servlet.xml -->
 <bean id="urlMapping" class="SimpleUrlHandlerMapping">
     <property name="mappings"><value>/*.mvc=controller</value></property>
 </bean>
 <bean id="controller" class="GlueSimpleController"/>
 <bean id="viewResolver" class="InternalResourceViewResolver">
     <property name="prefix" value="/springmvc/"/>
     <property name="suffix" value=".jsp"/>
 </bean>

 <!-- dispatcher-json-servlet.xml -->
 <bean id="urlMapping" class="SimpleUrlHandlerMapping">
     <property name="mappings"><value>/*.json=controller</value></property>
 </bean>
 <bean id="controller" class="GlueJsonController"/>
 <bean id="viewResolver" class="BeanNameViewResolver"/>
 <bean name="jsonView" class="JacksonJsonView"/>
 
See Also:
  • Constructor Details

    • GlueWebAutoConfiguration

      public GlueWebAutoConfiguration(GlueWebProperties glueWebProperties)
  • Method Details

    • glueSimpleController

      @Bean("glueSimpleController") @ConditionalOnMissingBean(name="glueSimpleController") @ConditionalOnBooleanProperty(name="glue.web.mvc.enabled", matchIfMissing=true) public GlueSimpleController glueSimpleController()
      JSP 뷰 응답용 GlueSimpleController를 자동 등록한다.

      기존 XML: <bean id="controller" class="GlueSimpleController"/>

      Returns:
      GlueSimpleController
    • glueJsonController

      @Bean("glueJsonController") @ConditionalOnMissingBean(name="glueJsonController") @ConditionalOnBooleanProperty(name="glue.web.json.enabled", matchIfMissing=true) public GlueJsonController glueJsonController(@Qualifier("jsonView") View jsonView)
      JSON 응답용 GlueJsonController를 자동 등록한다.

      기존 XML: <bean id="controller" class="GlueJsonController"/>

      Returns:
      GlueJsonController
    • restfulController

      @Bean @ConditionalOnMissingBean(RestfulController.class) @ConditionalOnBooleanProperty("glue.web.restful.enabled") public RestfulController restfulController(@Qualifier("jsonView") View jsonView)
      RESTful 방식의 RestfulController를 자동 등록한다.

      /glue/{serviceName} 패턴의 URL을 처리하며 @Controller 어노테이션으로 자동 감지된다.

      Returns:
      RestfulController
    • glueUrlHandlerMapping

      @Bean("glueUrlHandlerMapping") @ConditionalOnMissingBean(name="glueUrlHandlerMapping") public HandlerMapping glueUrlHandlerMapping()
      URL 패턴과 Glue 컨트롤러를 매핑하는 SimpleUrlHandlerMapping을 자동 등록한다.

      기존 XML:

      
       <bean id="urlMapping" class="SimpleUrlHandlerMapping">
           <property name="mappings">
               <value>/*.mvc=controller</value>
           </property>
       </bean>
       
      Returns:
      SimpleUrlHandlerMapping
    • jsonView

      @Bean("jsonView") @ConditionalOnMissingBean(name="jsonView") public View jsonView()
      JSON 뷰 JacksonJsonView를 jsonView Bean 이름으로 등록한다.

      기존 XML: <bean name="jsonView" class="JacksonJsonView"/>

      Returns:
      JacksonJsonView
    • lazyTransactionReleaseFilter

      @Bean("lazyTransactionReleaseFilter") @ConditionalOnMissingBean(name="lazyTransactionReleaseFilter") @ConditionalOnBooleanProperty("glue.web.filter.lazy-tx.enabled") public org.springframework.boot.web.servlet.FilterRegistrationBean<GlueLazyTransactionReleaseFilter> lazyTransactionReleaseFilter()
      GlueLazyTransactionReleaseFilter를 FilterRegistrationBean으로 등록한다.

      GlueLazyTransactionManager 사용 시 요청 처리 후 트랜잭션을 정리해야 할 때 필요하다.

      기존 XML (web.xml):

      
       <filter><filter-class>GlueLazyTransactionReleaseFilter</filter-class></filter>
       <filter-mapping><url-pattern>/*</url-pattern></filter-mapping>
       
      Returns:
      FilterRegistrationBean
    • glueHttpReceiverServlet

      @Bean("glueHttpReceiverServlet") @ConditionalOnMissingBean(name="glueHttpReceiverServlet") @ConditionalOnBooleanProperty("glue.web.http-receiver.enabled") public org.springframework.boot.web.servlet.ServletRegistrationBean<GlueHttpReceiverAdapter> glueHttpReceiverServlet()
      EAI 연동용 GlueHttpReceiverAdapter를 ServletRegistrationBean으로 등록한다.

      glue.web.http-receiver.enabled=true glue.web.http-receiver.url-pattern=*.tc glue.web.http-receiver.sc-success=900 glue.web.http-receiver.sc-resend=600 glue.web.http-receiver.sc-failure=700 glue.web.http-receiver.tc-length=8 glue.web.http-receiver.debug-enabled=true glue.web.http-receiver.enabled=true 설정 시만 활성화된다 (기본값: false).

      기존 XML (web.xml):

      
       <servlet>
           <servlet-name>HttpReceiver</servlet-name>
           <servlet-class>GlueHttpReceiverAdapter</servlet-class>
       </servlet>
       <servlet-mapping>
           <servlet-name>HttpReceiver</servlet-name>
           <url-pattern>*.tc</url-pattern>
       </servlet-mapping>
       
      Returns:
      ServletRegistrationBean
    • glueCacheClearServlet

      @Bean("glueCacheClearServlet") @ConditionalOnMissingBean(name="glueCacheClearServlet") @ConditionalOnBooleanProperty("glue.web.cache-clear.enabled") public org.springframework.boot.web.servlet.ServletRegistrationBean<GlueCacheClearServlet> glueCacheClearServlet()
      원격 캐시 초기화 서블릿 GlueCacheClearServlet을 ServletRegistrationBean으로 등록한다.

      glue.web.cache-clear.enabled=true 설정 시만 활성화된다 (기본값: false).
      다른 서버 인스턴스로부터 HTTP 요청을 받아 로컬 캐시를 삭제하는 원격 캐시 갱신 기능에 사용된다.

      기존 XML (web.xml):

      
       <servlet>
           <servlet-name>cache</servlet-name>
           <servlet-class>GlueCacheClearServlet</servlet-class>
           <init-param><param-name>UD_SC_SUCCESS</param-name><param-value>700</param-value></init-param>
           <init-param><param-name>UD_SC_FAILURE</param-name><param-value>800</param-value></init-param>
           <load-on-startup>2</load-on-startup>
       </servlet>
       <servlet-mapping>
           <servlet-name>cache</servlet-name>
           <url-pattern>*.cache</url-pattern>
       </servlet-mapping>
       

      application.properties:

       glue.web.cache-clear.enabled=true
       glue.web.cache-clear.url-pattern=*.cache
       glue.web.cache-clear.success-code=700
       glue.web.cache-clear.failure-code=800
       
      Returns:
      ServletRegistrationBean
    • glueJspDocBaseCustomizer

      @Bean("glueJspDocBaseCustomizer") @ConditionalOnMissingBean(name="glueJspDocBaseCustomizer") @ConditionalOnClass(name="org.apache.jasper.servlet.JspServlet") public org.springframework.boot.web.server.WebServerFactoryCustomizer<org.springframework.boot.tomcat.servlet.TomcatServletWebServerFactory> glueJspDocBaseCustomizer()