능글맞은 구렁이
Spring - mybatis(Mapper XML) 본문
Spring + myBatis 연동 방법 1 (SqlSessionDaoSupport를 상속 받는 DAO 작성)
1. applicationContext.xml 에 스프링 제공 SqlSessionFactoryBean 클래스 등록
<!-- Spring + mybatis Way 1 : SqlSessionFactoryBean Registration-->
<bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean" >
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value="classpath:sql-map-config.xml" />
</bean>
2. SqlSessionDaoSupport를 상속 받는 DAO 작성
@Repository
public class BoardDAOMybatis extends SqlSessionDaoSupport { //SqlSessionDaoSupport 부모
public BoardDAOMybatis(){
}
@Autowired
public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) { //sqlSessionFactory자식
super.setSqlSessionFactory(sqlSessionFactory);
}
public void insertBoard(BoardVO vo) {
System.out.println("===> Mybatis로 insertBoard() 기능 처리");
SqlSession session = getSqlSession(); //실제로 일을 처리하는 메서드
session.insert("BoardDAO.insertBoard", vo);
}
:
중간생략
:
}
3. BoardServiceImpl 내부 멤버변수의 데이터 타입 변경
@Service("boardService")
public class BoardServiceImpl implements BoardService {
@Autowired
private BoardDAOMybatis boardDAO;
:
중간생략
:
}
DI와 관련된 어노테이션
Auto-Scanning Component(Stereotyping Annotations),@Component,@Repository,@Service,@Controller,@RestController
스프링 컨테이너는 base-package의 클래스를 검색해서 자동으로 자바 빈으로 등록하는 데 이에 해당하는 것이
스테레오타입 어노테이션(Stereotype Annotation)인 @Component, @Repository, @Service, @Contoroller, @RestController 어노테이션이다.
@Controller, @Service, @Repository는 Presentation, Service, Data Access 계층을 나타내기 위한 @Component의 특별한 형태이다.
자동스캔을 위해서 XML 기반의 설정에서는 <context:component-scan base-package="onj.edu.spring, a.b.c" /> 과 같이 base-package를 기술하며,
자바설정 기반인 경우 @ComponentScan 어노테이션을 사용하거나 AnnotationConfigApplicationContext#scan() 메소드를 이용하여 직접 스캐닝을 기술할 수 있다.
@Component : 일반적인 용도의 컴포넌트들을 표시하는 기본 스테레오 타입, 멤버변수와 getter, setter만 가지고 있는 DTO, VO 같은 컴포넌트를 지칭한다.
스프링이 @Component 붙은 자바 클래스를 클래스패스 경로에서 자동으로 찾아 Application Context안에 이름을 부여하고 빈으로 등록한다.
빈의 기본 Scope는 songleton이며 @Scope 어노테이션으로 변경 가능하다.
@Repository : 영속성 계층(Persistence Layer, Data Access Layer, 주로 DB와 관련된 작업을 수행)의 DAO 컴포넌트에 부여하는 어노테이션,
@Component의 역할과 유사하며 DAO 메소드가 던지는 예외(Unckecked Exception)를 스프링의 DataAccessException으로 변환한다.
@Service : 비즈니스 로직을 담고 있는 서비스 레이어의 컴포넌트를 가리키며 @Component 어노테이션과 동작은 같지만
서비스 계층의 클래스들은 @Service 어노테이션을 부여하는 것이 코드 가독성이 좋다
@Controller : 프리젠테이션 레이어의 컨트롤러 컴포넌트, Spring MVC의 컨트롤러에 부여
'Framework > Spring' 카테고리의 다른 글
Spring-JPA(개념) (0) | 2021.07.04 |
---|---|
Lombok (0) | 2021.07.01 |
Spring-Mybatis (0) | 2021.06.29 |
Spring-MVC (0) | 2021.06.23 |
Spring-어노테이션 기반 MVC개발 (0) | 2021.06.23 |