3_Spring(Controller뺀나머지)(Model, SessionAttributes )

study/Spring · 2020. 2. 22. 08:52

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