Class GlueBizControllerImpl

java.lang.Object
com.poscoict.glueframework.biz.control.GlueBizControllerImpl
All Implemented Interfaces:
GlueBizController

public final class GlueBizControllerImpl extends Object implements GlueBizController
BizController 구현체.
GlueBizController는 Web,Non Web App 공통으로 사용되며 Transaction처리 및 Logging을 처리 하고 수행 결과는 GlueContext 에 반영한다.
 예제
 
 사용 예# 1

     GlueContext ctx = new GlueDefaultContext();
     ctx.put("ServiceName", "sample-service");
     GlueBizProvider.getController().doAction(ctx);



 참고 : applicationContext.xml

     <bean id="serviceManager" class="com.poscoict.glueframework.biz.control.GlueServiceManagerImpl">
         <property name="cacheManager" ref="cacheManager" />
         <property name="serviceLoader" ref="serviceLoader" />
     </bean>
     <bean id="serviceLoader" class="com.poscoict.glueframework.biz.control.GlueServiceLoader"/>
     <bean id="cacheManager" class="..."/>
 
  • Method Details

    • initBoot

      public static void initBoot(GlueServiceManager serviceManager)
      26.06.09 pd299368 Spring Boot 환경에서 GlueBizController 싱글톤을 사전 초기화한다.

      GlueCoreAutoConfiguration에서 serviceManager Bean 생성 직후 호출되어야 한다. 이렇게 하면 첫 HTTP 요청 시 지연 초기화 없이 안전하게 동작한다.

      Parameters:
      serviceManager - Spring Boot가 관리하는 GlueServiceManager Bean
    • getController

      public static GlueBizController getController()
      GlueBizController Instance를 생성 하고 Return 함.
      Controller Instance는 Singletone Pattern으로 최초 한번만 생성됨. Boot 환경에서는 initBoot()가 먼저 호출되어 있어야 한다.
      Returns:
      GlueBizController
    • doAction

      public GlueContext doAction(GlueContext ctx)
      Description copied from interface: GlueBizController
      Transaction을 처리와 Logging을 처리 하고 Service를 실행 한다.
      Transaction은 {xxx}-service.xml 에 다음과 같이 정의 된다.
      
       <transaction-manager id="tx1" commit="true"/>
       <transaction-manager id="tx2" commit="false"/>
      
       위의 Transaction List 만큼 Commit 및 Rollback을 수행하고
       만일 commit="false"이면 Commit을 수행하지 않는다.
       commit="false" 를 사용하는 경우에는 Read Only 경우에 사용된다.
       실제 Transaction의 정의는 applicationContext.xml에 다음과 같이 정의 된다.
      
       <bean id="tx1" class="com.poscoict.glueframework.transaction.GlueDataSourceTransactionManager">
           <property name="dataSource" ref="ds-1"/>
       </bean>
       <bean id="tx2" class="com.poscoict.glueframework.transaction.GlueDataSourceTransactionManager">
           <property name="dataSource" ref="ds-2"/>
       </bean>
       
      Specified by:
      doAction in interface GlueBizController
      Parameters:
      ctx - GlueContext
      Returns:
      GlueContext 결과 값 Return
    • doSubController

      public GlueContext doSubController(GlueContext ctx, boolean newTx)
      Description copied from interface: GlueBizController
      doAction()과 동일하지만 Transaction 처리는 정의에 따라 달라진다.
      
       <activity name="CallSubController" class="com.poscoict.glueframework.biz.activity.GlueSubService">
           <transition name="success" value="HandleError"/>
           <property name="service-name" value="Sub-service"/>
           <property name="new-transacion" value="true"/>
       </activity>
      
       Sub-service 를 호출 하는 위 예제에서 "<property name="new-transacion" value="true"/>" 인 경우
       Main-service 의 Transaction과 별개로 SubService에 정의되어 있는 Transaction을 처리하게 된다.
       "fale"이면 Transaction 처리를 하지 않는다. 즉 MainService의 Transaction을 이용하게 된다.
       
      Specified by:
      doSubController in interface GlueBizController
      Parameters:
      ctx - GlueContext
      newTx - 새로운 Transaction 시작 여부
      Returns:
      GlueContext 결과 값 Return