spring : spring mybatis 연동 (1) - jUnit으로 mysql 연결 테스트

2018. 1. 15. 01:33BACK/spring

스프링을 이용한 개발 중


국내에서 가장 많이 쓰이는 형태는 mybatis와의 연동작업을 통해서


SQL 처리에 대한 개발 생산성을 높이는 형태로 사용되는 것입니다.


첫 번째로 DataSource에 담아 mysql에 연결하고 jUnit을 통해 확인을 거친 후


mybatis와 spring을 연동하고 다시 jUnit을 통해 연동 테스트를 진행하겠습니다.!


1. 가장 먼저 pom.xml 에 해당 dependendy 를 추가합니다.  


라이브러리가 다운 되었는지 확인해봅니다!




( spring-jdbc , spring-test, mybatis, mybatis-spring 총 4개)



    org.springframework
    spring-jdbc
    ${org.springframework-version}

	

    org.springframework
    spring-test
    ${org.springframework-version}
    test

	

    org.mybatis
    mybatis
    3.4.1

	

    org.mybatis
    mybatis-spring
    1.3.0


2. 프로젝트 내에 src/main/webapp/WEB-INF/spring/root-context.xml 파일 수정


이곳은 STS(Spring Tool Suite)가 스프링 프로젝트를 생성할 때 만들어주는 파일 중 가장 중요한 파일로


스프링과 관련된 설정을 할 때, 즉 웹 자원과 관련되지 않은 모든 자원의 설정을 할 수 있습니다.

( 웹과 관련된 설정은 appServlet 폴더 내의 servlet-context.xml 파일로 분리되어있습니다. )


2-1) rott-context.xml 의 네임스페이스 추가 ( 초기화면입니다 )


여기서 aop, context, jdbc, mybatis-spring 옵션을 체크합니다.


바로 왼쪽으 탭인 Source 탭을 눌러 소스를 확인해보면 기존에 없던 xmls 주소들이 추가되어있음을 확인할 수 있습니다.



3.  Mysql 과의 연결을 담당하는 DataSource 설정하기


스프링과 mybatis를 같이 사용하는 경우에는 주로 스프링의 설정으로 JDBC 연결을 처리하는 경우가 많기에


추가했던 spring-jdbc 모듈의 클래스를 이용해서 root-context.xml 에 DataSource를 추가합니다.




		
		
		
		
	


이제 설정한 값을 통해 테스트를 진행할텐데


스프링은 별도의 test 라이브러리를 활용해 개발자가 손쉽게 테스트 할 수 있도록 제공합니다.


4. src/test/java 폴더 내에 DataSourceTest.java 파일을 작성합니다.


가장 위에 있는 @RunWith, @ContextConfiguration 애노테이션은 현재 테스트 코드를 실행할 때

스프링이 로딩되도록 하는 부분입니다. @ContextConfiguration의 locations 경로에 xml 파일을 이용하여 로딩됩니다!


인스턴스 변수의 @Inject 어노테이션은 bean 객체화 되어있는 DataSource를 스프링이 생성해서 주입해줍니다.!


import java.sql.Connection;
import javax.inject.Inject;
import javax.sql.DataSource;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(
	locations ={"file:src/main/webapp/WEB-INF/spring/**/*.xml"})
public class DataSourceTest {

	@Inject
	private DataSource ds;
	
	@Test
	public void testConection()throws Exception{
		
		try(Connection con = ds.getConnection()){
			System.out.println(con);
			
		}catch(Exception e){
			e.printStackTrace();
		}
	}
}


코드 작성이 완료되면 



이런식으로 db에 접근하여 정보를 출력하고 closing 된걸 확인할 수 있습니다 !


여기까지 spring 과 mysql 이 DataSource 를 통해 연결된 것을 확인하였고


다음 게시글에서는 Mybatis와의 연결을 다루겠습니다 !