본문 바로가기
Infra System

MariaDB based Prototype - Inner Architecture

by kellis 2020. 10. 14.

air-mariadb-starter를 의존하는 비즈니스 애플리케이션 프로토타입으로, 이 포스트에서는  Controller, Service, Model, Mapper에 대한 코드는 다루지 않습니다. 

 

application.yml

 

MariaDb와 Mybatis, log4jdbc 의존성을 가지고 있기 때문에 각각에 대한 yml 설정 필요합니다. 

...중략
 
logging:
  level:
    root: INFO
spring:
  datasource:
    driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
    url: jdbc:log4jdbc:mariadb://{서버IP:포트}/{데이터베이스명}
    username: {유저명}
    password: {패스워드}
 
...중략
 
mybatis:
  mapper-locations: classpath: {마이바티스 매퍼 경로}
  type-aliases-package: {모델 객체가 위치한 경로}
  configuration:
    map-underscore-to-camel-case: true
    default-fetch-size: 100
    default-statement-timeout: 30
 
...중략

log4jdbc 설정 파일

 

log4jdbc를 위한 설정 파일은 이를 의존하는 각 비즈니스 애플리케이션에서 작성합니다. 

 

(1) log4jdbc.log4j2.properties

log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator

 

(2) logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml"/>
 
    <logger name="jdbc.sqlonly" level="debug" />
    <logger name="jdbc.sqltiming" level="off" />
    <logger name="jdbc.audit" level="off" />
    <logger name="jdbc.resultset" level="off" />
    <logger name="jdbc.resultsettable" level="debug" />
    <logger name="jdbc.connection" level="off" />
</configuration>

메인클래스 어노테이션 설정

 

air-mariadb-starter를 의존하는 비즈니스 애플리케이션에서는 메인클래스에 반드시 아래와 같은 어노테이션 설정이 필요합니다. 

@MapperScan({매퍼 경로})
@EnableTransactionManagement
@SpringBootApplication(scanBasePackages = [{프로젝트 루트 경로},"kr.sys4u.lab.aircommonlib"])
class AirMariadbPrototypeApplication
 
fun main(args: Array<String>) {
    runApplication<AirMariadbPrototypeApplication>(*args)
}
  • MapperScan : MyBatis 매퍼를 읽어 들이기 위해 필요한 어노테이션
  • EnableTransactionManager : MariaDB 트랜잭션을 Java Config 방식으로, 어노테이션을 통해 사용하기 위해 필요한 어노테이션
  • scanBasePackages : common-lib-stub에서 카프카 토픽을 관리하기 위해 해당 경로를 반드시 추가

 

댓글