Package com.poscoict.glueframework.boot
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 Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionglueColumnManager(GlueCacheManager cacheManager) 컬럼 메타 정보를 캐싱하는GlueColumnManager를 자동 등록한다.glueQueryLoader(String queryRootPath, List<String> extraQueryFiles) SQL 쿼리 파일(*-query.glue_sql)을 로딩하는GlueCacheLoader를 자동 등록한다.glueQueryManager(GlueCacheManager cacheManager, GlueCacheLoader queryLoader) SQL 쿼리 정의를 캐싱·관리하는GlueQueryManager를 자동 등록한다.
-
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- 자동 구성되거나 사용자 정의된 GlueCacheManagerqueryLoader- 자동 구성되거나 사용자 정의된 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
-