-
3. 스프링 PSA웹개발/SpringBoot 2020. 4. 28. 11:10
참고강의
https://www.inflearn.com/course/spring_revised_edition/lecture/19744
예제로 배우는 스프링 입문 (개정판) - 인프런
이 강좌는 스프링 프레임워크에 입문하는 분들을 위한 강좌입니다.Spring - PetClinic이라는 스프링 공식 예제 프로젝트의 코드를 보며, 다음의 스프링의 핵심 기능을 쉽고 빠르게 이해할 수 있습니다. 초급 웹 개발 서버 프레임워크 및 라이브러리 Java Spring 온라인 강의 스프링 입문 개정판
www.inflearn.com
PSA란? Potable Service Abstraction
Service Abstraction 이란?
우리는 서블릿 애플리케이션을 만들고 있음에도 불구하고 스프링부트 mvc로 로직을 작성하면서 서블릿 애플리케이션이 눈에 보이지 않는다.
서블릿 코드
//GET /owner/create 모든요청이 해당 메소드에 들어온다 public class OwnerCreatServlet extends HttpServlet{ //get @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws super.doGet(req, resp); } //post @Override portected void doPost(HttpServletReqest req, HttpServletResponse resp) thorw super.doPost(req, resp); } }
위와같은 서블릿 코드방식으로 로직을 구성해야 하지만 우리가 공부하는 스프링부트는 Get 어노테이션을 활용하여 아래와 같이 처리한다.
우리는 위와같은 방법, 애노테이션으로 코딩을 하지만 아래는 서블릿 기반으로 코드가 동작한다. 이러한 추상화 객체를 사용하면 우리는 훨씬 편하게 코딩을 할 수 있을것이다.
1. Spring Web Mvc에서의 PSA
@Controller
class OwnerController
- 컨트롤러 애노테이션은 요청을 매핑할 수 있는 컨트롤러 역할을 하는 클래스를 생성해 주며 해당 클래스에
@GetMapping,@PostMapping 매핑 등으로 요청이 가능하다.
요청 매핑 정보 @Controller.... @RequestMapping와 같은 어노테이션과, 뒷단의 여러 복잡한 로직과 인터페이스들, 기반 시설들을 Servlet 혹은 Reactive 로 코딩을 할 수 있을것이다. 그 밑단의 서버를 우리는 마음대로 톰켓,제티,네티 등으로 바꿔가면서 사용이가능하다 코드를 거의 변경하지 않고!
2. Spring Transaction 에서 PSA
JDBC단에서 가장 기본적인 트랜잭션 코드
conn.setAutoCommit(false) 를하여 SQL이 여러번 날아가도 Commit를 하지않고 명시적으로 아래의 conn.setAutoCommit(true)를 통해 Commit가 쌓이면 한번에 쿼리를 날려준다. 둘 사이의 코드중 어떠한 에러라도 발생할 경우 catch문으로 날라가 에러처리를 해준다. 이러한 트랜잭션 처리를
@Transactional 어노테이션 하나로 트랜잭션 처리를 해주어 위와같이 복잡한 코드를 작성할 필요가 없다. 이렇게 JDBC, JPA에 맞게 트랜잭션 처리를 할수 있다. 코드를 전혀 변경하지 않고!
JDBC Transaction example
https://mkyong.com/jdbc/jdbc-transaction-example/
JDBC Transaction example – Mkyong.com
JDBC Transaction example By mkyong | April 13, 2011 | Updated: August 9, 2019 Viewed: 252,449 | +337 pv/w JDBC transaction make sure a set of SQL statements is executed as a unit, either all of the statements are executed successfully, or NONE of the state
mkyong.com
'웹개발 > SpringBoot' 카테고리의 다른 글
2. AOP(Aspect Oriented Programming) (0) 2020.04.10 1. IOC(Inversion of Controll) / DI(Depengency Injection) / Bean (0) 2020.04.05 내장 웹 서버 응용 ( 톰켓 말고 다른 서버 사용하기) (0) 2020.04.03 내장 웹 서버 이해 (0) 2020.04.03