예제로 배우는 스프링 프레임워크 입문 - 스프링 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