Class GlueJdbcAutoConfiguration

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

@AutoConfiguration @ConditionalOnClass({GlueQueryManagerImpl.class,javax.sql.DataSource.class}) @ConditionalOnBean(javax.sql.DataSource.class) @AutoConfigureAfter({GlueCoreAutoConfiguration.class,org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration.class}) public class GlueJdbcAutoConfiguration extends Object
Glue JDBC Auto-configuration.

DataSource가 Spring context에 존재할 때 자동으로 Glue JDBC 관련 Bean들을 등록한다.
DataSourceAutoConfiguration 이후에 실행된다.

다음 Bean들을 자동 등록한다:

  • queryLoader - SQL 쿼리 파일 로더 (@ConditionalOnMissingBean)
  • queryManager - 쿼리 관리자 (@ConditionalOnMissingBean)

DataSource, TransactionManager, DAO Bean은 사용자가 직접 정의한다:


 // application.properties (Spring Boot DataSource 자동설정)
 spring.datasource.url=jdbc:mariadb://localhost:3306/mydb
 spring.datasource.username=myuser
 spring.datasource.password=mypassword
 spring.datasource.driver-class-name=org.mariadb.jdbc.Driver

 // @Configuration 클래스에서 Glue 전용 Bean 등록
 @Bean("biz-dao")
 public GlueJdbcDao bizDao(@Qualifier("biz-dataSource") DataSource dataSource,
                            GlueQueryManager queryManager) {
     GlueJdbcDao dao = new GlueJdbcDao();
     dao.setDataSource(dataSource);
     dao.setQueryManager(queryManager);
     return dao;
 }

 @Bean("biz-tx")
 public GlueTransactionManager bizTx(@Qualifier("biz-dataSource") DataSource dataSource) {
     GlueDataSourceTransactionManager tm = new GlueDataSourceTransactionManager();
     tm.setDataSource(dataSource);
     return tm;
 }
 

기존 XML 방식 (applicationContext.xml):


 <bean id="queryLoader" class="com.poscoict.glueframework.dao.manager.GlueQueryLoader"/>
 <bean id="queryManager" class="com.poscoict.glueframework.dao.manager.GlueQueryManagerImpl">
     <property name="cacheManager" ref="cacheManager"/>
     <property name="queryLoader" ref="queryLoader"/>
 </bean>
 <bean id="biz-dataSource" class="org.apache.commons.dbcp2.BasicDataSource" .../>
 <bean id="biz-tx" class="...GlueDataSourceTransactionManager">
     <property name="dataSource" ref="biz-dataSource"/>
 </bean>
 <bean id="biz-dao" class="...GlueJdbcDao">
     <property name="dataSource" ref="biz-dataSource"/>
     <property name="queryManager" ref="queryManager"/>
 </bean>
 
See Also:
  • Constructor Details

    • GlueJdbcAutoConfiguration

      public GlueJdbcAutoConfiguration()
  • Method Details

    • glueQueryLoader

      @Bean("queryLoader") @ConditionalOnMissingBean(name="queryLoader") public GlueCacheLoader glueQueryLoader(@Value("${glue.query.root-path:query}") String queryRootPath, @Value("${glue.query.extra-files:#{null}}") List<String> extraQueryFiles)
      SQL 쿼리 파일(*-query.glue_sql)을 로딩하는 GlueCacheLoader를 자동 등록한다.

      기존 XML: <bean id="queryLoader" class="GlueQueryLoader"/>

      Returns:
      GlueCacheLoader (GlueQueryLoader 구현체)
    • glueQueryManager

      @Bean("queryManager") @ConditionalOnMissingBean(name="queryManager") public GlueQueryManager glueQueryManager(GlueCacheManager cacheManager, @Qualifier("queryLoader") GlueCacheLoader queryLoader)
      SQL 쿼리 정의를 캐싱·관리하는 GlueQueryManager를 자동 등록한다.

      기존 XML:

      
       <bean id="queryManager" class="GlueQueryManagerImpl">
           <property name="cacheManager" ref="cacheManager"/>
           <property name="queryLoader" ref="queryLoader"/>
       </bean>
       
      Parameters:
      cacheManager - 자동 구성되거나 사용자 정의된 GlueCacheManager
      queryLoader - 자동 구성되거나 사용자 정의된 queryLoader
      Returns:
      GlueQueryManager
      Throws:
      Exception - afterPropertiesSet() 처리 시 발생 가능한 Exception
    • glueColumnManager

      @Bean("columnManager") @Lazy @ConditionalOnMissingBean(name="columnManager") public GlueColumnManager glueColumnManager(GlueCacheManager cacheManager)
      컬럼 메타 정보를 캐싱하는 GlueColumnManager를 자동 등록한다.

      columnManager는 선택(optional) 컴포넌트다. GlueJdbcDao의 columnManager 필드는 기본값 null이며, 사용자가 명시적으로 dao.setColumnManager(...)를 호출한 경우에만 조회 결과 RowSet에 컬럼 메타데이터를 채운다. 대표적으로 Nexacro DataSet 변환 시 필요하다.

      따라서 이 빈은 @Lazy로 선언되어 실제로 주입(사용)되는 시점에만 생성된다. 어떤 DAO도 GlueColumnManager를 주입하지 않으면 이 빈은 끝까지 생성되지 않으므로 불필요한 초기화가 발생하지 않는다. (레거시 XML의 lazy-init="true"와 동일한 동작이다.)

      기존 XML:

      
       <bean id="columnManager" class="GlueColumnManager" lazy-init="true">
           <property name="cacheManager" ref="cacheManager"/>
       </bean>
       
      Parameters:
      cacheManager - 자동 구성되거나 사용자 정의된 GlueCacheManager
      Returns:
      GlueColumnManager