관리 메뉴

개발 블로그

FirstSpringBoard#4-2] 마이바티스(mybatis)의 매퍼 인터페이스(mapper Interface)를 스프링 컨테이너에 등록하기 본문

Spring Framework 개발 일지/Spring으로 게시판 만들기

FirstSpringBoard#4-2] 마이바티스(mybatis)의 매퍼 인터페이스(mapper Interface)를 스프링 컨테이너에 등록하기

anomie7 2017.08.29 09:49

저번 시간에는 sqlSessionTemplate를 root-context.xml이라는 설정 파일에 등록하고 @Autowired를 통해서 의존성을 주입받는 방법을  테스트해보았어요.

그러나 sqlSessionTemplate뿐만 아니라 우리가 설정했던 Mapper Interface도 스프링 컨테이너에 등록해서 애노테이션으로 주입 받을 수 있어요. 그 방법을 알아보고 설정 파일에 알맞게 DAO와 Service 클래스도 수정할 겁니다.


root-context.xml에 아래 엘리먼트를 추가해주세요.


아래 그림을 보고 테스트 코드를 수정해서 실행하세요.


DAO를 수정해주세요. 코드가 엄청나게 많이 줄어든 것을 확인할 수 있어요.


매퍼 인터페이스를 등록하지 않은 않은 상태에서 DAO 클래스의 코드는 아래와 같아요. 자원해제와 commit() 메소드를 사용하지 않게 되죠. 이 상태만해도 코드가 엄청 줄어드는데. 매퍼 인터페이스를 사용하면 코드가 다시 절반으로 줄어듭니다.
BoardServiceImpl 클래스의 소스코드에요. @Autowired 애노테이션이 추가되었네요. BoardDAO boardDAO = new BoardDAO(); 이렇게 new 키워드를 사용해서 객체를 생성했습니다. 그런데 new BoardDAO(); 없이 @Autowired를 붙여주었어요. 클래스가 스스로 필요한 객체를 생성하던 것을 설정 파일의 메타데이터를 통해서 스프링 컨테이너가 생성해서 주입하는 기능을 IOC(inversion Of Control) 혹은 DI(Dependency Injection)라고 합니다. 스스로 필요한 객체를 new 키워드로 생성하던 것을 스프링 컨테이너가 알아서 생성하고 주입하니 둘 다 이 기능을 잘 설명해주는 용어이죠.
이제 테스트 코드를 작성해서 잘 작동하는지 확인해볼게요. 여기서도 boardService = new BoardServiceImpl(); 코드가 사라졌습니다. 대신 @Autowired로 BoardServiceImpl 객체를 스프링 컨테이너로부터 주입받아요.


이제 기본적인 비즈니스 로직을 모두 구현했어요.

 웹 애플리케이션의 영역을 크게 두가지로 나눌 수 있습니다.

 비즈니스 레이어(business layer)와 프레젠테이션 레이어(presentation layer)입니다.

 비즈니스 레이어는 비즈니스 로직과 DB와 연동하는 부분입니다.

 프레젠테이션 레이어는 사용자에게 보이는 부분과 사용자의 요청을 처리해주는 부분으로 나뉩니다.

 우리는 이제까지 비즈니스 레이어를 구현한 거에요.

 다음 시간부터는 프레젠테이션 레이어를 구현할게요.


0 Comments
댓글쓰기 폼