MARIA DB 사용 기준, 또 이미 프로젝트를 위한 DB를 생성했을 때를 가정하고 작성
( 테이블 존재 여부와 상관없이 DB만 생성 하고 바로 테스트 )
1) 빈 등록하기
src > resources > application.properties에 아래와 같이 연결 할 DB 정보를 입력한다.
spring.datasource.hikari.driver-class-name=org.mariadb.jdbc.Driver
spring.datasource.hikari.jdbc-url=jdbc:mariadb://localhost:3306/[db이름]?serverTimezone=Asia/Seoul&useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true
spring.datasource.hikari.username=[DB아이디, 없으면 마스터계정 root입력]
spring.datasource.hikari.password=[DB 접속 비밀번호]
spring.datasource.hikari.connection-test-query=SELECT NOW() FROM dual
2) Config 클래스 파일 만들기
src > main > java > 프로젝트 패키지 안에 config 패키지를 생성후 DatabaseConfig 클래스 파일 생성
클래스 파일 내부에 아래 코드를 복사해서 붙여 넣어 준다.
오류나는 이유는 import가 제대로 되지 않았을 경우이니 꼭 import 해서 가져오기..!!
@Configuration
@PropertySource("classpath:/application.properties")
public class DatabaseConfig {
@Autowired
private ApplicationContext context;
@Bean
@ConfigurationProperties(prefix = "spring.datasource.hikari")
public HikariConfig hikariConfig() {
return new HikariConfig();
}
@Bean
public DataSource dataSource() {
return new HikariDataSource(hikariConfig());
}
@Bean
public SqlSessionFactory sqlSessionFactory() throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(dataSource());
// factoryBean.setMapperLocations(context.getResources("classpath:/mappers/**/*Mapper.xml"));
return factoryBean.getObject();
}
@Bean
public SqlSessionTemplate sqlSession() throws Exception {
return new SqlSessionTemplate(sqlSessionFactory());
}
}
이 파일은 스프링 레거시를 이용했던 사람이라면 알 root-context.xml 파일을 xml이 아닌 java로 작성하는 단계다.
자세히 비교해보면 dataSource, SqlSessionFactoryBean, SqlSessionTemplate 등 만드는 빈은 똑같지만 문법의 변화만 생겼다.
2-1) 인텔리제이 자동 import 단축키 사용 방법
Alt + Enter로 하나씩 가져올 수 있지만 (굳이...?)
인텔리제이에서의 자동 imort 단축키는 ctrl + alt + O 이며, 패키지까지 제대로 가져오기 위해서는
설정 > Editor > General > Auto Import 에서 아래 두 항목을 체크 해줘야 한다.
3) 테스트 코드 작성 후 실행해보기
src > teest > ApplicationTests 에 하단의 테스트 코드를 작성 해준다.
@Autowired
private ApplicationContext context;
@Autowired
private SqlSessionFactory sessionFactory;
@Test
void contextLoads() {
}
@Test
public void testByApplicationContext() {
try {
System.out.println("=========================");
System.out.println(context.getBean("sqlSessionFactory"));
System.out.println("=========================");
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void testBySqlSessionFactory() {
try {
System.out.println("=========================");
System.out.println(sessionFactory.toString());
System.out.println("=========================");
} catch (Exception e) {
e.printStackTrace();
}
}
메소드별로 테스트가 가능하기 때문에 메소드 더블 클릭 > 우클릭 > Run 눌러서 단위별 실행 하며 테스트 해보기
이렇게 실행 결과가 잘 뜨면 DB 연결 문제 없이 성공했다는 뜻.
※ 테스트 코드는 DatabaseConfig에 선언해둔 sqlSessionFactory()라는 Bean을 꺼내온다는 뜻이다.