@Configration 클래스 파일을 이용한 설정 방법
- config.properties를 따로 만드는 이유:
1) DB, 이메일 인증 등 계정, 비밀번호가 github에 업로드 되는 문제
2) 서버 경로, DB URL, DB 계정 정보 변경 등
팀원들 간의 서로 다른 정보를 기입하는 상황이 발생하여 코드의 충돌이 발생하는 문제
- 1) build.gradle의 dependencies에 아래 코드 추가
// SpringBoot JDBC 관련 라이브러리 모음
implementation 'org.springframework.boot:spring-boot-starter-jdbc'
// MyBatis 관련 라이브러리 모음
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.2'
// 오라클 JDBC 드라이버
runtimeOnly 'com.oracle.database.jdbc:ojdbc8'
// @ConfigurationProperties 사용 가능
annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'
- 2) 프로젝트 우클릭 gradle-Refresh Gradle Project 클릭
- 3) resources 폴더 밑에 config.properties 파일 생성 후 아래 코드 추가
(추가로 properties에서 UTF-8로 변경)
#오라클 DB 연결 정보
spring.datasource.hikari.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.hikari.jdbc-url=jdbc:oracle:thin:@IP주소:포트번호:DB이름
spring.datasource.hikari.username=계정명
spring.datasource.hikari.password=비밀번호
# HikariCP Connection Pool Properties
#풀이 연결을 사용할 수 있을 때까지 대기하는 최대 시간(ms)을 지정
spring.datasource.hikari.connection-timeout=30000
#풀의 최대 연결 수 설정
spring.datasource.hikari.maximum-pool-size=20
#연결이 풀에서 유휴 상태로 있을 수 있는 최대 시간(ms)을 지정
spring.datasource.hikari.idle-timeout=600000
#연결 풀의 이름을 지정
spring.datasource.hikari.pool-name=MyHikariCP
#자동 커밋 끄기
spring.datasource.hikari.auto-commit=false
- 4) git.ignore에 config.properties 처리
- 5) edu.kh.project.common.config.DBConfig 클래스 작성
package edu.kh.project.common.config;
import javax.sql.DataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
@Configuration
@PropertySource("classpath:/config.properties")
public class DBConfig{
@Autowired
private ApplicationContext applicationContext;
@Bean
@ConfigurationProperties(prefix = "spring.datasource.hikari")
public HikariConfig hikariConfig() {
return new HikariConfig();
}
@Bean
public DataSource dataSource(HikariConfig config) {
DataSource dataSource = new HikariDataSource(config);
return dataSource;
}
@Bean
public DataSource dataSource(HikariConfig config) {
DataSource dataSource = new HikariDataSource(config);
return dataSource;
}
}