Service
Spring에서 Service Interface를 사용하는 이유
1. 프로젝트에 규칙성을 부여하기 위해
2. 클래스간의 결합도를 약화시키기 위함
--> 유지보수성향상
3. Spring AOP 사용하기 위함(이였다..)
--> 최근에는 필요는 없지만 이전 버전 프로젝트와 호환을 위해 사용
-> Controller
방금 생성한 MemberService를 사용하기 위해 bean으로 등록해서
new 할 필요 없이 불러올수 있음
@AutoWired 사용시 bean scaning을 통해 등록된 bean 중
알맞은 bean을 의존성 주입(DI) 해줌
-> ServiceImpl
인터페이스를 구현하기 위한 memberServiceImpl 클래스 생성
@Servcie // Service 레이어, 비즈니스 로직을 가진 클래스라는걸 명시 + bean 등록
* Spring에서는 service 단에서 SqlSession을 얻어오지 않음
-> DAO 에서 바로 얻어올 예정
왜? SqlSession을 개발자가 생성 또는 얻어올 필요 없이 DAO에서
바로 DI를 통해 얻어올 수 있고 추후 AOP를 이용하여 트랜잭션 처리도 할수 있기 때문에
-> memberDAO
bean 등록 어노테이션의 매개변수 == 등록되는 bean의 이름
미작성 시 클래스명 중 제일 앞글자만 소문자로 변경되어 bean이 등록됨
기존 session과 같은 sqlSession을 이용하기 Autowired를 통해 ID함
-> @Autowired
private SqlSessionTemplate sqlSession
~~~~~~~~~~~~여기서 부터 마이바티스 ~~~~~~~~~~~~
mapper 생성
mapper namespace정해주기
resultMap 만들기
쿼리문 작성
mybatis-config에 typeAlias와 mapper 등록
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-> Service -> Controller
Model
Model은 응답으로 전달하고자 하는 데이터를 맵 형식(K,V)으로 담아 전달하는 역할
model.addAttribute("key","value");
scope는 기본적으로 request임
@SessionAttributes
Model에 담긴 데이터 중 key 값이 @SessionAttributes의 매개변수에 작성된 값과 같은 경우
해당 데이터의 scope를 session으로 변경
@SessionAttributes({"",""})
SessionStatus 객체 : 세션의 상태를 관리할 수 있는 객체
@SessionAttributes 사용시 Session을 무묘화 시키기 위해서는 SessionStatus를 사용해야한다
status.setComplete();
'study > Spring' 카테고리의 다른 글
5_Spring(암호화) (0) | 2020.02.27 |
---|---|
4_Spring(ResponseBody, Transactional) (0) | 2020.02.25 |
2_Spring(Controller)(@RequestParam, @ModelAttribute) (0) | 2020.02.21 |
1_Spring(흐름, root-context 설정) (0) | 2020.02.19 |
0_Spring(세팅) (0) | 2020.02.18 |