spring op 의 간단 한 사용 방법 에 대한 상세 한 설명
프로그램 이 실행 되 는 동안 특정한 코드 를 지정 한 방법 이 지정 한 위치 에 동적 으로 삽입 하여 실행 하 는 프로 그래 밍 방식 을 말한다.
1.op 모듈 가 져 오기;Spring AOP:(spring-aspects)
2.업무 논리 류(MathCalculator)를 정의 합 니 다.비 즈 니스 논리 가 실 행 될 때 로 그 를 인쇄 합 니 다(방법 전,방법 실행 종료,방법 이상,xxx)
3.로그 절단면 류(LogAspects)를 정의 합 니 다.절단면 류 의 방법 은 MathCalculator.div 가 어디 까지 실행 되 는 지 동적 으로 감지 한 다음 에 실행 해 야 합 니 다.
알림 방법:
5.절단면 류 와 업무 논리 류(목표 방법 소재 류)를 모두 용기 에 넣는다.
6.Spring 에 게 어떤 종류 가 절단면 류 인지 알려 야 합 니 다.(절단면 류 에 주 해 를 추가 해 야 합 니 다.@Aspect)
[7]、설정 클래스 에@EnableaspectJAutoProxy 를 추가 합 니 다[주석 기반 op 모드 열기]
Spring 에 많은@EnableXXX;
3 단계:
1)업무 논리 구성 요소 와 절단면 류 를 용기 에 넣는다.Spring 에 게 어느 것 이 절단면 류 인지 알려 주세요(@Aspect)
2),절단면 류 의 모든 알림 방법 에 알림 주 해 를 표시 하여 Spring 이 언제 어디서 실행 되 는 지 알려 줍 니 다(접점 표현 식)
3),주석 기반 op 모드 열기;@EnableAspectJAutoProxy
package com.opk.bean;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.*;
import java.util.Arrays;
/*
* @Aspect: Spring
* wmy 13:03 2019/9/5
* @Param
* @return
**/
@Aspect
public class LogAspects {
//
//1、
//2、
@Pointcut("execution(public * com.opk.bean.*.*(..))")
public void pointCut(){};
//@Before ; ( )
@Before("pointCut()")
public void logStart(JoinPoint joinPoint){
Object[] args = joinPoint.getArgs();
System.out.println(joinPoint.getSignature().getName()+": 。。。@Before, :"+ Arrays.asList(args));
}
@After("com.opk.bean.LogAspects.pointCut()")
public void logEnd(JoinPoint joinPoint){
System.out.println(""+joinPoint.getSignature().getName()+" 。。。@After");
}
//JoinPoint
@AfterReturning(value ="pointCut()",returning = "result")
public void logReturn(JoinPoint joinPoint,Object result){
System.out.println(""+joinPoint.getSignature().getName()+" 。。。@AfterReturning: :{"+result+"}");
}
@AfterThrowing(value ="pointCut()",throwing = "ex")
public void logException(JoinPoint joinPoint,Exception ex){
System.out.println(""+joinPoint.getSignature().getName()+" 。。。 :{"+ex+"}");
}
}
import org.springframework.stereotype.Component;
@Component
public class MathCalculator {
public int dev(int i,int j)
{
System.out.println("MathCalculator......");
return i/j;
}
}
@EnableAspectJAutoProxy
@Configuration
public class AOPConfig {
//
@Bean("calculator")
public MathCalculator calculator(){
return new MathCalculator();
}
//
@Bean
public LogAspects logAspects(){
return new LogAspects();
}
}
public static void main(String[] args) {
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
ctx.register(AOPConfig.class);
ctx.refresh();
MathCalculator bean = (MathCalculator)ctx.getBean("calculator");
bean.dev(10,3);
}
실행 결과:이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.