BackEnd/Spring & Springboot Study

예제로 배우는 스프링 프레임워크 입문 - 스프링 PSA

PSA (Potable Service Abstraction) 소개

환경의 변화와 관계없이 일관된 방식의 (코드 유지) 기술로의 접근 환경을 제공하려는 추상화 구조

 

Service Abstraction

https://en.wikipedia.org/wiki/Service_abstraction

 

Service abstraction - Wikipedia

Service abstraction is a design principle that is applied within the service-orientation design paradigm so that the information published in a service contract is limited to what is required to effectively utilize the service[1] The service contract shoul

en.wikipedia.org

 

Spring MVC Service Abstraction

 

@Controller 와 @RequestMapping

 

@Controller request를 mapping하는 class가 된다.

@RequestMapping => URL 요청에 맞춰 Method가 처리하게끔 연결

 

@Controller | @ReuqestMapping | ...

Servlet | Reactive

톰캣, 제티, 네티, 언더토우

https://docs.spring.io/spring-framework/docs/current/reference/html/web-reactive.html

 

Web on Reactive Stack

The original web framework included in the Spring Framework, Spring Web MVC, was purpose-built for the Servlet API and Servlet containers. The reactive-stack web framework, Spring WebFlux, was added later in version 5.0. It is fully non-blocking, supports

docs.spring.io

Spring5 webflux (netty)
how?
spring4 -> 1 req 1 thread
spring5 -> cpu갯수 <=> thread (threadpool)
적은 수의 스레드로 동시성을 처리하고 
더 적은 하드웨어 리소스로 확장할 수 있는 비차단 웹 스택이 필요하다
이는 비동기 비차단 공간에 잘 구축된 서버(예: Netty) 때문에 중요

 

Spring Transaction Service Abstraction

PlatformTransactionManager

@Transactional

어떠한 데이터베이스에 데이터를 주고 받을때 A -> B -> C 까지 되어야 하나의 작업으로 완료되는 경우

그 중 하나라도 누락되면 동작하면 안되는 경우 (All or Nothing)

dbconn.setAutoCommit(false); // default true 명시적으로 commit하기 위함

preparedStatementInsert.setInt(1, 1)
preparedStatementInsert.setString(2, "a");
preparedStatementInsert.executeUpdate()

// ~~ do Something ~~

doConnection.commit()
} catch (SQLException e) {
	e.printStackTrace();
	dbConnection.rollback(); // executeUpdate등의 sql 미 적용
}

PlatformTransactionManager

JpaTransacionManager | DatasourceTransactionManager (JDBC)| HibernateTransactionManager

 

Spring  Cache Service Abstraction

CacheManager

@Cacheable | @CacheEvict | ...

CacheManager

JCacheManager | ConcurrentMapCacheManager | EhCacheCacheManager | ...

 

 

PSA는 usb converter같은 느낌이다