안녕하세요.
이제 드디어 스프링 설정을 하게되었습니다.
포스팅 제목이 FirstSpringBoard인데 여태 진행 사항을 보면서 "스프링도 자바 코딩과 다를게 없잖아?"라고 의구심이 드셨을 수도 있어요.
이제 부터 본격적으로 스프링을 이용해서 프로젝트를 구현해나갈 겁니다.
우선 우리가 사용할 기능은 DI(Dependenxy Injection)입니다. 우리말로는 의존성 주입이라고 해요.
BoardDAO에서 SqlSession이나 ServiceBoardImpl에서 BoardDAO의 객체를 생성해서 사용해 주잖아요.
BoardDAO boardDAO = new BoardDAO() 이런 식으로요.
스프링 의존성 주입을 사용하면 new 키워드를 사용한 객체 생성없이 스프링에서 객체를 생성해서 변수에 주입을 해줍니다.
이런 역할을 하는 녀석을 스프링 컨테이너라고 합니다.
메모리에서 일정 공간을 차지하면서 Bean이라고 하는 개발자가 설정파일에 등록한 객체들을 관리해요.
마이바티스와 연동하면 생산성이 높아지는 것을 확실히 느낄 수 있을거에요.
본격적으로 들어가기 전에 우선 실습 과정을 정리해보겠습니다.
- 의존성 추가(기존에 추가된 의존성 라이브러리는 mybatis, mysql-conntector, commons-dbcp입니다. pom.xml dependencies 엘리먼트에 mybatis-spring, spring-tset, spring-jdbc를 추가해줍니다.
- mybatis-config.xml 파일에 등록한 DB정보를 스프링 컨테이너 설정 파일인 root-context.xml에 추가해준다.(datasource Class를 Bean 등록한다.)
- 유틸클래스를 사용해 생성한 sqlsessionfactory를 스프링 컨테이너(SqlSessionFactoryBean)에서 만들어준다.
- 유틸클래스에서 생성하던 SqlSession을 스프링 컨테이너에서 SqlSessionTemplate로 만들어준다.(트랜잭션을 스프링이 처리해준다. Commint(), rollerback()사용할 필요 없음)
- Spring-test를 이용해서 JUnit 코드에서도 스프링 컨테이너로 부터 의존성 주입 받을 수 있도록 하고 테스트 코드 작성해서 연동 되는지 확인
- 의존관계에 있던 클래스들을 스프링 컨테이너에 등록한다.(DAO와 Service를 빈으로 등록하고 의존성 주입)
- 메소드가 변하는 것은 없기 때문에 테스트 코드에 변화는 없다. (new로 객체를 생성하는 부분 삭제)
- Mapper도 스프링 컨테이너에서 관리해줄 수 있다.
아래 그림은 실습에 필요한 의존성 라이브러리를 추가한 후의 Dependencise 엘리먼트에 등록된 의존성 라이브러리 목록입니다.
여태까지는 pom.xml의 코드를 공개했었는데. 이번에는 여러분이 직접해보시라는 의미해서 의존성을 어떻게 추가할 수 있는지 알려드릴게요.
메이븐 중앙 저장소를 이용해서 필요한 모듈을 찾아서 dependencise 엘리먼트에 추가해 줄 수 있습니다.
https://search.maven.org/#search%7Cga%7C1%7C 클릭해주세요.
검색창에서 필요한 jar 파일을 검색할 수 있습니다.
mybatis-spring을 검색해주세요. 그러면 아래에 검색 리스트가 나타날거에요.
가장 위에 있는 1.3.1 버전을 클릭해주세요.
아래 화면이 나타날거에요.
Dependency Information 텍스트 박스 아래에 여태까지 우리가 직접 타이핑해서 추가하던 dependency 엘리먼트가 있네요.
그대로 복사해주세요.
이제 pom.xml을 열고 dependencise 엘리먼트 아래에 붙여넣기 해주세요.
나머지 spring-jdbc와 spring-test는 propertise 엘리먼트에서 버전을 일괄적으로 대입해줍니다.
스스로 하는데 어려움이 없으실거에요.
이제 본격적으로 스프링 기능을 활용해보겠습니다.
root-context.xml이라는 스프링 설정 파일을 추가할 겁니다.
저에게 spring 설정 파일을 추가하는 건 굉장히 힘든 일이었어요.
그런데 STS에서는 기본적인 설정 파일 양식을 제공해주는 걸 알고 엄청 좋아했던 기억이 나네요(멍청이...)
아래 그림대로 진행해주세요.
우리가 사용할 네임스페이스는 beans와 context입니다. 두가지 선택하고 Finish 눌러주세요.
생성한 후 프로젝트 구성은 아래와 같습니다.
설정 파일을 한번 열어주세요. 깨끗한 공백이네요.
이 프로젝트를 하면서 제일 막막했던 부분이 이 부분이었던 거같아요.
책을 보면서 할 줄 안다고 생각했는데. 막상 할려니 많이 헷갈렸어요.
여러분도 수업을 통해서 혹은 책을 통해서 아니면 이 포스팅을 통해서 실습을 하고 계실텐데.
하나의 사이클이 끝났다고 해서 그냥 덮어두지 마시고 저처럼 처음부터 다시 프로젝트를 설계하고 공부했던 것에 대해서 다시 복습해보세요.
저는 포스팅하는 것까지 하면 같은 프로젝트를 3번 정도 다시 보고 있어요.
이제 설정하는 거에 대해서는 머리속이 잘 정리된 느낌이 들어요. 강추입니다.
아래가 최종적인 root-context.xml의 엘리먼트 구성이에요.
주석처리한 부분을 보고 각 엘리먼트에 대해서 숙지해주세요.
보기 불편하시면 ctrl 누르고 + (혹은 마우스 휠)로 확대하면 잘린 부분까지 한번에 볼 수 있어요.
mybatis-config.xml에서 enviroments 엘리먼트를 삭제해주세요.
왜냐하면 root-context.xml에서 Datasource를 통해서 DB연동 정보를 관리하기 때문입니다.
엘리먼트 구성은 아래와 같아요.
테스트 코드를 작성해서 SqlSessionTemplate가 정상적으로 주입되는지 확인해야겠죠?
아래와 같이 테스트 코드를 작성해주세요.
그리고 실행해주세요.
그럼 정상적으로 실행되고 결과도 성공적입니다.
콘솔창을 열어 로그메시지를 볼게요.
어렵지 않으셨기를 바랍니다.
단순히 따라하는 건 어렵지 않을거에요.
하지만 스프링을 활용하는데 있어서 스프링에 대해서 이해를 해야지 더 잘 사용할 수 있겠죠?
이 포스팅은 프로젝트의 흐름과 소스코드를 공개하지 이론적인 부분은 자세히 다루지 못해요.
바로 글쓴이의 자질 때문이죠...ㅠ 그러니 이 포스팅을 통해서는 어떻게 스프링이 웹 애플리케이션 구현에 활용되는지 큰 그림을 잡으시고
디테일한 부분은 책을 통해서 습득하셨으면 좋겠어요.
오늘은 테스트코드로 Spring과 mybatis가 연동되는지 확인해봤습니다.
설정이 정상적으로 된 것을 확인했으니
다음 시간에는 DAO와 Service 클래스에 @Autowried를 추가해주고요.
Mapper 인터페이스도 스프링 컨테이너에 등록해줄게요.
'Spring Framework 개발 일지 > Spring으로 게시판 만들기' 카테고리의 다른 글
FirstSpringBoard#5-1] web.xml 설정과 presentation 레이어 용 설정 파일 생성. (0) | 2017.08.29 |
---|---|
FirstSpringBoard#4-2] 마이바티스(mybatis)의 매퍼 인터페이스(mapper Interface)를 스프링 컨테이너에 등록하기 (0) | 2017.08.29 |
FirstSpringBoard#3-4] Service 인터페이스 구현 & 테스트 코드 수정 (0) | 2017.08.27 |
FirstSpringBoard#3-3] 수정, 삭제, 특정 게시물 조회 기능 구현 & Service 인터페이스 구현 (0) | 2017.08.27 |
FirstSpringBoard#3-2] 프로젝트 과정 설명 & 비즈니스로직 구현하기(게시물 등록 하기) (0) | 2017.08.25 |