본문 바로가기
네이버클라우드/JAVA 웹 프로그래밍

JAVA 73일차 (2023-09-05) 자바 프로그래밍_74. Spring의 @Transactional 로 교체하기_개인프로젝트 - 마트 관리 시스템

by prometedor 2023. 9. 5.
## 74. Spring의 @Transactional 로 교체하기

- 직접 제작한 트랜잭션 프록시 객체 대신 Spring에서 제공하는 클래스 및 애노테이션 사용하기

 

ㄴ Transactional 애노테이션 파일, TransactionProxyBuilder 클래스 파일이 있는 util 패키지 제거하기

 

 

AppConfig.java

ㄴ 해당 import 제거하기

=>
AppConfig.java

ㄴ 해당 코드 제거

 

 

DefaultBoardService.java

=>

DefaultBoardService.java

ㄴ Spring 의 @Transactional 애노테이션으로 교체하기

=>

DefaultBoardService.java

ㄴ @Service 주석 제거해주기

 

 

DefaultMemberService.java

=>

DefaultMemberService.java

ㄴ Spring 의 @Transactional 애노테이션으로 교체하기

=>

DefaultMemberService.java

ㄴ @Service 주석 제거해주기

=>
App 실행

=>

=>

 

 

 

https://docs.spring.io/spring-framework/reference/data-access/transaction/declarative/annotations.html

 

Using @Transactional :: Spring Framework

The @Transactional annotation is metadata that specifies that an interface, class, or method must have transactional semantics (for example, "start a brand new read-only transaction when this method is invoked, suspending any existing transaction"). The de

docs.spring.io

 

=>
AppConfig.java

ㄴ @EnableTransactionManagement 애노테이션 이용하기

     ㄴ @Transactional 애노테이션을 처리할 객체 등록

=>
App 재실행

=>

ㄴ 트랜잭션 관련 클래스들 생성됨

 

 

AppConfig.java

=>

ㄴ @ComponentScan을 사용하면 자동으로 빈으로 등록되어 스프링 애플리케이션 컨텍스트를 초기화하는 데 사용됨

ㄴ @ComponentScan 애너테이션을 사용하여 패키지를 스캔하도록 설정하면 스프링 컨텍스트에서 해당 패키지에 있는 @Component 및 관련 애너테이션을 가진 클래스들을 검색하고 빈으로 등록함

 

 

AppConfig.java

=>

ㄴ @MapperScan 애노테이션을 추가하면 해당 클래스가 출력됨

=>

=>

ㄴ 로그인 정보 입력 후 [로그인] 선택

=>

ㄴ 로그인 정상적으로 실행됨을 확인

=>

ㄴ 게시글 목록 정상적으로 출력됨을 확인

=>

ㄴ 게시글 내용 입력 후 [등록] 선택

=>

ㄴ 게시글이 정상적으로 등록됨을 확인

=>

ㄴ 사파리 브라우저에서 같은 게시글 페이지를 확인했을 때 글 등록이 동일하게 반영되어있음을 확인

=>

ㄴ 제목에 255자보다 긴 글자수를 넣어 에러 발생 시키기

=>

=>

ㄴ 오류 발생된 내용의 게시글은 추가되지 않음을 확인

=>

ㄴ 사파리 브라우저에서 확인했을 때도 오류 발생된 내용의 게시글은 추가되지 않음을 확인