Spring 정리 11 -- 대면 (AOP) 1 -- 주해 설정 방식 AOP 구현
다음은 AOP 에서 몇 가지 중요 한 개념 을 살 펴 보 겠 습 니 다.
² 절단면 (Aspect)
절단면이것 은 아마도 AOP 에서 가장 중요 한 용어 일 것 이다.예 를 들 어 우리 가 위 에서 소개 한 사용자 권한 검증 은 서로 다른 신분 의 사용자 가 무엇 을 할 수 있 는 지, 무엇 을 할 수 없 는 지 모두 이 모듈 에서 판단 한다.이 모듈 이 호출 하 는 위치 도 보통 고정 되 어 있 습 니 다. 사용자 가 요청 을 한 후에 업무 논 리 를 실행 하기 전에.
² 연결 점 (JoinPoint)
프로그램 실행 과정의 어느 단계 점.만약 어떤 방법 이 호출 되 거나, 어떤 이상 이 던 져 진다 면.
² 처리 논리 (Advice)
어떤 연결 점 에서 사용 하 는 처리 논리, 처리 논리 호출 모델 은 보통 세 가지 가 있 습 니 다.
1. Around
연결 점 전후 에 예비 처리 과정 과 사후 처리 과정 을 삽입 합 니 다.
2. Before
연결 점 전에 만 예비 처리 과정 을 삽입 합 니 다.
3. Throw
연결 점 에서 이상 을 던 질 때 이상 처 리 를 합 니 다.
² 접점 (PointCut)
처리 방식 (Advice) 이 언제 실 행 될 지 가리 키 는 일련의 연결 점 집합
1.1. 주석 설정 방식 으로 AOP 를 실현 합 니 다. 다음은 주석 라 이브 러 리 로 spring AOP 를 실현 하고 AOP 관련 개념 을 설명 하 는 방법 을 소개 합 니 다.
단계:
1) spring 관련 의존 라 이브 러 리 추가
* SPRING_HOME/dist/spring.jar
* SPRING_HOME/lib/jakarta-commons/commons-logging.jar
* SPRING_HOME/lib/log4j/log4j-1.2.14.jar
* SPRING_HOME/lib/aspectj/*.jar
2) Aspect 정의 절단면 사용
3) Aspect 에서 Pointcut 와 Advice 를 정의 합 니 다.
4) AspectJ 의 Annotation 지원 을 사용 하고 Aspect 클래스 와 대상 을 Ioc 용기 에 설정 합 니 다.
예 를 들 어 우 리 는 위의 동적 에이전트 의 그 예 를 바탕 으로 코드 는 다음 과 같다.
주석 설정 AOP 클래스, Security Handler. java 사용 하기
/**
* Aspect
*/
@Aspect
public class SecurityHandler {
/**
* Pointcut,Pointcut allAddMethod,
* ,
*
* Pointcut , ( Joinpoint)
*/
@Pointcut("execution(* add*(..)) || execution(* del*(..))")
private void allAddMethod(){};
/**
* Advice,
*/
@Before("allAddMethod()")
private void checkSecurity() {
System.out.println("------checkSecurity()------");
}
}
applicationContext.xml:
<aop:aspectj-autoproxy/><!-- AOP -->
<bean id="securityHandler" class="spring.SecurityHandler"/>
<bean id="userManager" class="spring.UserManagerImpl"/>
UserManager.java
public interface UserManager {
public void addUser(String username, String password);
public void deleteUser(int id);
public void modifyUser(int id, String username,
String password);
public String findUserById(int id);
}
UserManagerImpl.java
public class UserManagerImpl implements UserManager {
public void addUser(String username, String password) {
System.out.println("----UserManagerImpl.addUser()------");
}
public void deleteUser(int id) {
System.out.println("------UserManagerImpl.deleteUser()---");
}
public String findUserById(int id) {
System.out.println("----UserManagerImpl.findUserById()--");
return null;
}
public void modifyUser(int id, String username, String password) {
System.out.println("-------UserManagerImpl.modifyUser()--");
}
}
테스트 단 코드:
public class Client {
public static void main(String[] args) {
BeanFactory factory = new
ClassPathXmlApplicationContext("applicationContext.xml");
UserManager userManager =
(UserManager)factory.getBean("userManager");
userManager.addUser(" ", "123");
}
}
인쇄 정보:
-------checkSecurity()---------------
-------UserManagerImpl.addUser()-----
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.