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 미 적용
}
PlatformTransactionManager
JpaTransacionManager | DatasourceTransactionManager (JDBC)| HibernateTransactionManager
Spring Cache Service Abstraction
CacheManager
@Cacheable | @CacheEvict | ...
CacheManager
JCacheManager | ConcurrentMapCacheManager | EhCacheCacheManager | ...
PSA는 usb converter같은 느낌이다
'BackEnd > Spring & Springboot Study' 카테고리의 다른 글
[토비의 스프링] 토비의 스프링 시작하기 (0) | 2022.11.22 |
---|---|
26. 프로필 수정 테스트 (0) | 2021.12.24 |
예제로 배우는 스프링 프레임워크 입문 - 스프링@AOP 실습 (0) | 2021.12.05 |
예제로 배우는 스프링 프레임워크 입문 - 프록시 패턴 (0) | 2021.12.03 |
예제로 배우는 스프링 프레임워크 입문 - 스프링 AOP (0) | 2021.12.03 |