✍ 따뜻한 개발 공부
[Spring] 예제 만들어보면서 AOP 구현 이해해보깅~ 😵💫
따따시
2022. 8. 6. 14:35
jsp/servlet도 아직 익숙하지 않은데 , spring 들어가고 계속 새로운 것을 습득하려니
머리가 아푸넹, 어쩌겠어 익숙해질때까지 해야지 (냉정ㅋ)
순서대로 예제 프로젝트 따라친 코드를 다시 씹어보쟈구~?
<pom.xml> 파일에 아래 코드를 붙여넣기 (의존 설정)
<!-- AOP -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.7.4</version>
</dependency>
<aop파일 만들깅>
package com.javalec.ex;
import org.aspectj.lang.ProceedingJoinPoint;
public class LogAop {
public Object loggerAop(ProceedingJoinPoint joinpoint) throws Throwable {
String signatureStr = joinpoint.getSignature().toShortString();
System.out.println( signatureStr + " is start.");
long st = System.currentTimeMillis();
try {
Object obj = joinpoint.proceed();
return obj;
} finally {
long et = System.currentTimeMillis();
System.out.println( signatureStr + " is finished.");
System.out.println( signatureStr + " 경과시간 : " + (et - st));
}
}
}
<applicationCTX.xml 전체 부분>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd">
<bean id="logAop" class="com.javalec.ex.LogAop" />
<aop:config>
<aop:aspect id="logger" ref="logAop">
<aop:pointcut id="publicM" expression="within(com.javalec.ex.*)" />
<aop:around pointcut-ref="publicM" method="loggerAop" />
</aop:aspect>
</aop:config>
<bean id="student" class="com.javalec.ex.Student" >
<property name="name" value="홍길동" />
<property name="age" value="10" />
<property name="gradeNum" value="3" />
<property name="classNum" value="5" />
</bean>
<bean id="worker" class="com.javalec.ex.Worker" >
<property name="name" value="홍길순" />
<property name="age" value="35" />
<property name="job" value="개발자" />
</bean>
</beans>
* nameplace 가서 aop 체크해주기!!!
* 아래 부분이 xml 파일 핵심 내용!!
<bean id="logAop" class="com.javalec.ex.LogAop" />
먼저 bean을 만들어주기
<!-- aop를 실행하겠다. -->
<aop:config>
<aop:aspect id="logger" ref="logAop">
<!-- 핵심 코드는 expression="com.javlect.ex 아래에 있는 모든 파일 "에 적용하겠다. -->
<aop:pointcut id="publicM" expression="within(com.javalec.ex.*)" />
<!-- loggerAop 메소드를 pointcut-ref에 적용해주겠다. -->
<aop:around pointcut-ref="publicM" method="loggerAop" />
</aop:aspect>
</aop:config>
백앤드 쪽을 공부할 수록 느끼는게,
java 가 jonna 중요하다는 것
따로 1시간씩 java 시간을 내서 복습을 해나가야징~~ 👀