본문 바로가기
학습/Spring

[spring] 핵심3_Portable Service Abstraction

by KKambi 2020. 3. 22.

Portable Service Abstraction (PSA)

  1. 추상화된 계층을 사용하여 편리하게 구현할 수 있다. (Service Abstraction)
  2. 코드를 수정하지 않고 전혀 다른 기술 스택을 사용할 수 있다. (Portable)

 

Service Abstraction

  • Spring으로 Servlet Applicaiton을 만들고 있지만 서블릿 코드를 전혀 쓰지 않음
  • 서블릿 프로그래밍? HttpServlet 상속 클래스에서 Http Request 처리 -> web.xml 맵핑
  • Spring에선? Mapping Annotation만 사용하면 내부는 서블릿 기반 작동

 

Portable

  • 코드를 건들지 않고 다른 기술로 바꿀 수 있다.
  • ex. 현재 Tomcact으로 실행중 -> Webflux로 손쉽게 교체가능
  • webflux : 서블릿 구조X / CPU개수만큼 스레드로 요청받으면서 가용성을 높임

 

스프링MVC에 적용된 Service Abstraction

  1. @Controller 안의 Mapping Annotation (@GetMapping, @PostMapping, ...)
    1. Mapping Annotation은 name, value, path, params, headers 등의 속성
    2. 요청에 대한 정보를 보유
    3. 이에 맵핑되는 요청일 때만 해당 메소드가 처리
    4. 해당 메소드는 view name 반환
    5. resources/templates 안의 경로 따라감
    6. 해당 뷰 템플릿에서 전달된 model 속 객체 사용가능!
  2. @Transactional
    • 어노테이션만 붙이면 자세한 JDBC 코드를 작성하지 않아도 트랜젝션 처리
    • Hibernate나 JPA를 사용할 경우 구현체를 바꿀 수 있다. 코드를 변경하지 않은 채로!
  3. @Cacheable
    • cache solution을 변경하게 되더라도 비즈니스 로직은 변경되지 않는다. (캐싱 설정만 수정)
    • ex. memcached -> redis

 

댓글