[\ # 0x 0044] Spring AOP 학습 (3): 예 와 기본 개념
<?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:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
<context:annotation-config />
<context:component-scan base-package="com.bjsxt"/>
<aop:aspectj-autoproxy />
</beans>
op 의 namespace 와 < op: aspectj - autoproxy / > 를 추가 하 는 것 을 주의 하 십시오.LogInterceptor 의 코드 는 다음 과 같 습 니 다.
package com.bjsxt.aop;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;
@Aspect
@Component
public class LogInterceptor {
@Pointcut("execution(public * com.bjsxt.service..*.add(..))")
public void myMethod(){};
@Before("myMethod()")
public void before() {
System.out.println("method before");
}
@Around("myMethod()")
public void aroundMethod(ProceedingJoinPoint pjp) throws Throwable {
System.out.println("method around start");
pjp.proceed();
System.out.println("method around end");
}
}
여기 서 두 가 지 를 주의해 야 한다.
(1) 여기 에는 @ Component 가 있어 야 합 니 다. Spring 에 새로운 Login Interceptor 대상 이 있어 야 합 니 다.이렇게 해야만 LoginInterceptor 대상 을 UserDAOImpl 에 짜 넣 을 수 있 습 니 다.
(2) execution (public void com. bjsxt. dao. UserDAOImpl. save (com. bjsxt. model. User) "), 이것 은 AspectJ 문법 입 니 다. execution 은 방법 이 실 행 될 때 삽입 하 는 것 을 표시 합 니 다. 속성 초기 화, 클래스 불 러 올 때 와 같은 다른 접근 점 이 있 습 니 다.
이 예 에 근거 하여 우 리 는 AOP 의 개념 을 이해한다.
(1) Target: UserdaoImpl 은 짠 Target 입 니 다.
(2) JoinPoint: "execution (public void save ()" 여기 가 JoinPoint, 즉 착안점 입 니 다.
(3) Advice: before () 방법 은 Advice, Advice is an action taken by an Aspect at a certain JoinPoint
(4) AdviceType: @ Before 는 AdviceType 으로 Advice that executes before a JoinPoint 임 을 표시 합 니 다.
(5) PointCut: 어댑터 (@ Pointcut ("execution (public * com. bjsxt. service. *. add (.)") 에서 알 수 있 듯 이 PointCut 는 JoinPoint 의 집합 이지 만 PointCut 은 하나의 방법 에 의존 해 야 합 니 다.
(6) Aspect: LogInterceptor 와 같은 종류, 또는 LogInterceptor 와 같은 논리 (즉 기록 로그) 는 Aspect 입 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Spring에서 DAO가 순환 호출될 때 데이터가 실시간으로 업데이트되지 않는 해결 방법문제를 설명하기 전에 몇 가지 전제 사항을 설명하십시오. Spring의 구성 파일에서 다음과 같은 방식으로 데이터베이스 트랜잭션을 구성했다고 가정하십시오. 현재 UserDao 및 Security Service가 있습...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.