본문 바로가기
✍ 따뜻한 개발 공부

[Spring] 예제 만들어보면서 AOP 구현 이해해보깅~ 😵‍💫

by 따따시 2022. 8. 6.

 

 

 

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 시간을 내서 복습을 해나가야징~~ 👀

 

 

 

코딩.슈.슈슉.! 덤벼라!

댓글