댓글 작업 마무리, aop기초

Hwawon_2·2022년 4월 28일
0
post-thumbnail

형제 태그 .reply의 내용을 대신 가져올수 있도록 수정해 보겠습니다.
boardDetail.jsp

실행하면

수정 버튼을 눌렀을때 내용만 뜨는 걸 확인 할 수 있다.

다음은 댓글 등록창을 만들어 보겠습니다.
위치는 댓글 목록 아래에 두겠습니다.
역시 간단하게 input태그와 버튼으로 이벤트를 처리합니다.

실행하면

댓글 쓰는 폼이 만들어 진걸 확인할 수 있다.

===============================

스프링의 AOP와 트랜잭션

AOP는 핵심 로직과 보조 로직을 분리하자는 개념에서 출발합니다.
예)
핵심 로직 - 소개팅가기(), 출근하기(), 놀러가기(), 해외여행()
(목표가 되는 로직)
보조 로직 - 씻기(), 그루밍(), 대중교통타기()
(핵심로직 실행을 위해 실행하는 보조적 기능들)

여태까지는 모든 메서드의 실행요소시간이 몇 초인지 구하고 싶으면 메서드마다 기능을 추가해야 했지만, 이제는 실행요소시간 구하는 기능을 하나만 만들어 두면, 모든 메서드에 기능을 전역적으로 추가하거나 혹은 기능을 추가할 메서드 범위를 지정할 수 도 있습니다.
이런 개념을 AOP라고 부르며, 주로 로그, 보안등 주요 기능은 아니지만 주요 기능을 보조하는 기능을 구현 할때 많이 사용합니다.

AOP용어정리


====
프로젝트를 생성하겠습니다.
prj_aop 프로젝트를 생성하고
pom.xml에가서 값을 수정 해줍니다.



spring-test 5.07버전
lombok 1.18.18버전
aspectjweaver 1.9.0버전
aspectjrt 1.9.0버전 추가


com.ict.service 패키지를 만들어
SampleService 인터페이스
SapmleServiceImpl 구현 클래스를 만들어 줍니다.
SampleService.java

SapmleServiceImpl.java

(service의 코드는 현재 로그를 기록하는 기능이 없습니다.
보조 기능과 핵심 기능을 따로 개발하는 AOP 개념을 적용해 로깅기능을 추가할 것이기 때문입니다.
로그를 자동기록해주는 Advice를 지금부터 작성해보겠습니다.)
com.ict.aop 패키지에 LogAdvice클래스를 생성

LogAdvice.java

(pom.xml에서 aspectjrt의 scope 태그를 주석처리 해야 LogAdvice.java내부에서 @Aspect어노테이션이 인식되니 주의)

(@Log4j가 에러나는 경우는 pom.xml의 log4j버전이 1.2.15일경우 exclusions를 남기고 1.2.17인 경우는 삭제하신 다음 두 버전 모두 공통적으로 내부 scope를 주석처리하면 풀림)

LogAdvice.java

@Before는 핵심로직 실행 전에 logBefore메서드가 실행됨을 나타내며, 내부 문자열은 규칙에 맞는 메서드 전부를 실행하기 전에 실행됨을 나타냅니다.
위의 경우 맨 앞의 은 접근제한자 상관 없음, 가운덴는 어느 패키지 어느 클래스까지, 뒤의 은 클래스명, 메서드명, 파라미터 종류이다.
(@Aspect를 받은 클래스는 AOP의 타겟임을 알리는것)

root-content.xml
aop, context설정

내부에 작성

이제 컴포넌트 스캔이 되면서 위와 같이 메서드 왼쪽에 화살표 마크가 추가됩니다.

com.ict.service 패키지 내부에
SampleServiceTest클래스를 생성해 작성하고

실행했을때 Proxy객체가 확인되어야 AOP 적용이 완벽하게 된 것입니다.

profile
코딩 일기장

0개의 댓글