on
예제로 배우는 스프링 프레임워크 입문 - 스프링 PSA
예제로 배우는 스프링 프레임워크 입문 - 스프링 PSA
PSA (Potable Service Abstraction) 소개
환경의 변화와 관계없이 일관된 방식의 (코드 유지) 기술로의 접근 환경을 제공하려는 추상화 구조
Service Abstraction
https://en.wikipedia.org/wiki/Service_abstraction
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
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 미 적용 }
JpaTransacionManager | DatasourceTransactionManager (JDBC)| HibernateTransactionManager
Spring Cache Service Abstraction
CacheManager
@Cacheable | @CacheEvict | ...
JCacheManager | ConcurrentMapCacheManager | EhCacheCacheManager | ...
PSA는 usb converter같은 느낌이다
from http://devjun.tistory.com/240 by ccl(A) rewrite - 2021-12-08 13:01:52