메소드 차단(AOP)
YMP 프레임워크의 AOP는 다음 주석을 통해 구성되는 CGLIB의 MethodInterceptor에 의해 구현된 차단을 기반으로 합니다.
@Before : 클래스 또는 메소드의 프리인터셉터를 설정하는 데 사용됩니다.
@After: 클래스 또는 메서드에 대한 사후 인터셉터를 설정하는 데 사용됩니다.
@Clean: 클래스의 모든 인터셉터 또는 지정된 인터셉터를 정리합니다.
@ContextParam: 주로 인터셉터가 전달되는 데 사용되는 컨텍스트 매개변수를 설정하는 데 사용됩니다. 매개변수 구성
@무시: 메소드를 선언하면 모든 인터셉터 구성이 무시됩니다.
@Ignored로 주석이 달린 메소드, 비공개 메소드, 객체 클래스 메소드 및 객체 클래스 오버로드 메소드는 인터셉터에 의해 처리되지 않습니다.
예시 1:
// 创建自定义拦截器 public class DemoInterceptor implements IInterceptor { public Object intercept(InterceptContext context) throws Exception { // 判断当前拦截器执行方向 switch (context.getDirection()) { // 前置 case BEFORE: System.out.println("before intercept..."); // 获取拦截器参数 String _param = context.getContextParams().get("param"); if (StringUtils.isNotBlank(_param)) { System.out.println(_param); } break; // 后置 case AFTER: System.out.println("after intercept..."); } return null; } } @Bean public class TestDemo { @Before(DemoInterceptor.class) public String beforeTest() { return "前置拦截测试"; } @After(DemoInterceptor.class) public String afterTest() { return "后置拦截测试"; } @Before(DemoInterceptor.class) @After(DemoInterceptor.class) @ContextParam({ @ParamItem(key = "param", value = "helloworld") }) public String allTest() { return "拦截器参数传递"; } public static void main(String[] args) throws Exception { YMP.get().init(); try { TestDemo _demo = YMP.get().getBean(TestDemo.class); _demo.beforeTest(); _demo.afterTest(); _demo.allTest(); } finally { YMP.get().destroy(); } } }
예 2:
#🎜🎜 #@Bean @Before(DemoInterceptor.class) @ContextParam({ @ParamItem(key = "param", value = "helloworld") }) public class TestDemo { public String beforeTest() { return "默认前置拦截测试"; } @After(DemoInterceptor.class) public String afterTest() { return "后置拦截测试"; } @Clean public String cleanTest() { return "清理拦截器测试"; } public static void main(String[] args) throws Exception { YMP.get().init(); try { TestDemo _demo = YMP.get().getBean(TestDemo.class); _demo.beforeTest(); _demo.afterTest(); _demo.cleanTest(); } finally { YMP.get().destroy(); } } }
참고
: 주석의 값 속성을 사용하면 다음 형식을 통해 프레임워크 전역 매개변수에서 xxx를 얻을 수 있습니다. $xxx 중 의 값