'[책] 스프링부트 시작하기 (김인우)'를 공부하면서 적은 내용입니다.
Spring Boot 프로젝트 생성
프로젝트 설정
게시판을 만들기 위해 새롭게 프로젝트 생성을 하였다.
패키지 명을 board 로 지정했고 빌드 관리 도구를 Gradle 로 설정하였다.
프로젝트 생성 후 build.gradle을 열어보면 선택한 라이브러리들이 추가된 것을 확인 할 수 있다.
데이터베이스 연결하기
Spring Boot 프로젝트의 경우 데이터 소스를 처리하기 위해서 크게 2가지 방식 사용한다.
- application.properties를 이용해 설정
- @Bean 어노테이션을 이용해 설정
개발환경과 운영환경에서 다르게 적용될 수 있는 설정들은 application.properties 에 정의하는 것이 좋다.
1. 데이터 소스 설정하기
application.properties에 데이터 소스 설정하기
spring.datasource.hikari.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.hikari.jdbc-url=jdbc:mysql://127.0.0.1:3306/insight?useUnicode=true&characterEncoding=utf-8
spring.datasource.hikari.username=아이디
spring.datasource.hikari.password=비밀번호
spring.datasource.hikari.connection-test-query=SELECT 1
- spring.datasource.hikari.jdbc-url : 연결할 데이터 베이스의 주소를 설정
- 아이디, 비밀번호는 MySQL 설치할 때 사용한 아이디, 비밀번호 입력
- spring.datasource.hikari.connection-test-query : 데이터베이스와 정상적으로 연결되는지 확인하기 위한 테스트 쿼리
DatabaseConfiguration 클래스 만들기
scr/main/java/board 패키지 밑에 configuration 패키지 생성하고 DatabaseConfiguration 클래스 생성
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import javax.sql.DataSource;
@Configuration
@PropertySource("classpath:/application.properties")
public class DatabaseConfiguration {
@Bean
@ConfigurationProperties(prefix="spring.datasource.hikari")
public HikariConfig hikariConfig(){
return new HikariConfig();
}
// 하키리CP 의 설정 파일을 이용해서 데이터베이스와 연결하는 데이터 소스 생성
@Bean
public DataSource dataSource() throws Exception {
DataSource dataSource = new HikariDataSource(hikariConfig());
// 데이터 소스가 정상적으로 생상되었는지 확인
System.out.println(dataSource.toString());
return dataSource;
}
}
@PropertySource("classpath:/application.properties")
: application.properties을 설정파일로 사용할 수 있도록 위치 지정
@PropertySource 어노테이션 추가해 다른 설정파일도 사용할 수 있다.
@ConfigurationProperties(prefix="spring.datasource.hikari")
- application.propertoes 에서 설정했던 데이터베이스 관련 정보를 사용할 수 있도록 지정
- @ConfigurationProperties 어노테이션에 prefix가 spring.datasource.hikari로 되어 있으므로
spring.datasource.hikari로 시작하는 설정을 이용해서 하키리CP 의 설정파일을 만듭니다.
2. MyBatis 연동하기
MyBatis는 쿼리 기반 웹 어플리케이션을 개발할 때 가장 많이 사용되는 SQL Mapper 프레임워크이다.
직접 JDBC 를 이용할 경우 개발자가 작성해야 할 코드가 늘어나고 서비스 로직 코드와 쿼리를 분하기 어렵다.
MyBatis 설정하기
package com.insight.board.configuration;
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 com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
@Configuration
@PropertySource("classpath:/application.properties") // application.propertoes를 사용할 수 있도록 설정파일 위치 지정
public class DatabaseConfiguration {
@Autowired
private ApplicationContext applicationContext;
// application.propertoes 에서 설정했던 데이터베이스 관련 정보를 사용할 수 있도록 지정
// @ConfigurationProperties 어노테이션에 prefix 가 spring.datasource.hikari로 되어 있으므로
// spring.datasource.hikari로 시작하는 설정을 이용해서 하키리CP 의 설정파일을 만듭니다.
@Bean
@ConfigurationProperties(prefix="spring.datasource.hikari")
public HikariConfig hikariConfig() {
return new HikariConfig();
}
// 하키리CP 의 설정 파일을 이용해서 데이터베이스와 연결하는 데이터 소스 생성
@Bean
public DataSource dataSource() throws Exception {
DataSource dataSource = new HikariDataSource(hikariConfig());
// 데이터 소스가 정상적으로 생상되었는지 확인
System.out.println(dataSource.toString());
return dataSource;
}
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource);
sqlSessionFactoryBean.setMapperLocations(applicationContext.getResources("classpath:/mapper/**/sql-*.xml"));
return sqlSessionFactoryBean.getObject();
}
@Bean
public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
- SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
: spring-MyBatis 에서는 SqlSessionFactory를 생성하기 위해서 SqlSessionFactoryBean을 사용한다.
MyBatis를 단독으로 사용할 때는 SqlSessionFactoryBuilder 를 사용한다.
- sqlSessionFactoryBean.setDataSource(dataSource); → 앞서 만든 데이터 소스를 설정한다.
- .setMapperLocations(applicationContext.getResources("classpath:/mapper/**/sql-*.xml"));
→MyBatis 의 Mapper 파일의 위치를 설정
→ classpath : resources 폴더를 의미
→ /mapper/**/ : mapper 폴더 밑의 모든 폴더를 위미
→ sql-*.xml : 이름이 sql 로 시작하고 확장자가 xml인 모든 파일 의미
Mapper 폴더 생성
: 쿼리를 담고 있는 xml 파일을 저장 (src/main/resources 폴더 밑에 mapper 폴더 생성)
'Backend > 스프링부트 시작하기' 카테고리의 다른 글
Spring Boot 게시판 구현하기 6 (로그 추가하기) (0) | 2022.04.19 |
---|---|
Spring Boot 게시판 구현하기5 (게시글 상세, 수정, 삭제) (0) | 2022.04.19 |
Spring Boot 게시판 구현하기 4 (게시글 등록) (0) | 2022.04.19 |
Spring Boot 게시판 구현하기 3 (게시글 목록) (0) | 2022.04.19 |
Spring Boot 게시판 구현하기 2 (기본설정) (0) | 2022.04.18 |