java相关:Spring AOP中定义切点的实现方法示例

发布于 2020-6-6|

复制链接

摘记: 本文实例讲述了Spring AOP中定义切点的实现方法。分享给大家供大家参考,具体如下:一 配置

```xml

..

本文实例讲述了Spring AOP中定义切点的实现方法。分享给大家供大家参考,具体如下:一 配置

```xml

```

二 切面类SystemArchitecture

```java

package org.crazyit.app.aspect;

import org.aspectj.lang.annotation.*;

@Aspect

public class SystemArchitecture

{

@Pointcut("execution(* org.crazyit.app.service.impl.*.*(..))")

public void myPointcut(){}

}

```

LogAspect

```java

package org.crazyit.app.aspect;

import org.aspectj.lang.annotation.*;

import org.aspectj.lang.*;

@Aspect

public class LogAspect

{

// 直接使用SystemArchitecture切面类的myPointcut()切入点

@AfterReturning(returning="rvt"

, pointcut="SystemArchitecture.myPointcut()")

// 声明rvt时指定的类型会限制目标方法必须返回指定类型的值或没有返回值

// 此处将rvt的类型声明为Object,意味着对目标方法的返回值不加限制

public void log(Object rvt)

{

System.out.println("获取目标方法返回值:" + rvt);

System.out.println("模拟记录日志功能...");

}

}

```

三 接口Hello

```java

package org.crazyit.app.service;

public interface Hello {

// 定义一个简单方法,模拟应用中的业务逻辑方法

void foo();

// 定义一个addUser()方法,模拟应用中的添加用户的方法

int addUser(String name, String pass);

}

```

World

```java

package org.crazyit.app.service;

public interface World {

// 定义一个简单方法,模拟应用中的业务逻辑方法

public void bar();

}

```

四 实现类HelloImpl

```java

package org.crazyit.app.service.impl;

import org.springframework.stereotype.Component;

import org.crazyit.app.service.*;

@Component("hello")

public class HelloImpl implements Hello

{

// 定义一个简单方法,模拟应用中的业务逻辑方法

public void foo()

{

System.out.println("执行Hello组件的foo()方法");

}

// 定义一个addUser()方法,模拟应用中的添加用户的方法

public int addUser(String name , String pass)

{

System.out.println("执行Hello组件的addUser添加用户:" + name);

if(name.length() 10)

{

throw new IllegalArgumentException("name参数的长度必须大于3,小于10!");

}

return 20;

}

}

```

WorldImpl

```java

package org.crazyit.app.service.impl;

import org.springframework.stereotype.Component;

import org.crazyit.app.service.*;

@Component("world")

public class WorldImpl implements World {

// 定义一个简单方法,模拟应用中的业务逻辑方法

public void bar() {

System.out.println("执行World组件的bar()方法");

}

}

```

五 测试类

```java

package lee;

import org.springframework.context.*;

import org.springframework.context.support.*;

import org.crazyit.app.service.*;

public class BeanTest

{

public static void main(String[] args)

{

// 创建Spring容器

ApplicationContext ctx = new

ClassPathXmlApplicationContext("beans.xml");

Hello hello = ctx.getBean("hello" , Hello.class);

hello.foo();

hello.addUser("孙悟空" , "7788");

World world = ctx.getBean("world" , World.class);

world.bar();

}

}

```

六 测试结果

执行Hello组件的foo()方法

获取目标方法返回值:null

模拟记录日志功能...

执行Hello组件的addUser添加用户:孙悟空

获取目标方法返回值:20

模拟记录日志功能...

执行World组件的bar()方法

获取目标方法返回值:null

模拟记录日志功能...

java方法设置切点_java相关:Spring AOP中定义切点的实现方法示例相关推荐

  1. Spring AOP中定义切点PointCut详解

    1.AOP是什么? 软件工程有一个基本原则叫做"关注点分离"(Concern Separation),通俗的理解就是不同的问题交给不同的部分去解决,每部分专注于解决自己的问题.这年 ...

  2. Spring AOP中定义切点(PointCut)和通知(Advice)

    本文讨论一下Spring AOP编程中的两个关键问题,定义切点和定义通知,理解这两个问题能应付大部分AOP场景. 如果你还不熟悉AOP,请先看AOP基本原理,本文的例子也沿用了AOP基本原理中的例子. ...

  3. Spring AOP中定义切点的详细介绍

    AOP的切点定义大部分的人都知道excecution()其实在AOP中有很多关旭切点的参数,用好可这些参数可以让我们的工作事半功倍, 一.excecution() 关于excecution必须要介绍的 ...

  4. java切点配置_Spring AOP中定义切点的实现方法示例

    本文实例讲述了Spring AOP中定义切点的实现方法.分享给大家供大家参考,具体如下: 一 配置 xmlns:xsi="http://www.w3.org/2001/XMLSchema-i ...

  5. Spring AOP 中的切点是什么?如何定义切点?

    Spring AOP 中的切点是什么?如何定义切点? 什么是切点? 在 Spring AOP 中,切点(Pointcut)是指一组连接点(Join Point)的集合.连接点是程序执行过程中的某个特定 ...

  6. Spring AOP中pointcut 切点详解

    Spring AOP中pointcut 是指那些方法需要被执行"AOP",是由"Pointcut Expression"来描述的. Pointcut可以有下列方 ...

  7. java邮件模板代码_Java的Spring框架中实现发送邮件功能的核心代码示例

    Spring中已经封装了邮件操作类,通过spring配置文件可以便捷地注入到controller.action等地方. 下面是配置: p:host="${mail.host}" p ...

  8. 《JAVA练习题目5》 请在类中定义计算阶乘的方法完成本题目的求解

    训练要点:类中的方法应该如何编写和调用.(10分) 题目内容: 输入一个10以内的整数n,计算1!+2!+-+n!的值,并输出该值. 输入格式: 10以内的一个整数 输出格式: 代表计算结果的一个整数 ...

  9. java args例子_Spring AOP中使用args表达式的方法示例

    本文实例讲述了Spring AOP中使用args表达式的方法.分享给大家供大家参考,具体如下: 一 配置 xmlns:xsi="http://www.w3.org/2001/XMLSchem ...

最新文章

  1. Zookeeper .Net客户端代码
  2. 智能指针shared_ptr的几个例子
  3. 跨库多维分析后台的实现
  4. [react] 请说下react组件更新的机制是什么
  5. zabbix企业应用之low level discovery监控mysql
  6. AIOps中异常检测简的单应用
  7. [一分钟先生]涂勇:通过跳槽走上管理岗位不可取
  8. Zookeeper Tutorial 1 -- Overview
  9. form表单无刷新提交文件(iframe)
  10. Linux LVM管理
  11. 让Cookies操作变得向Session一样简单
  12. nginx + tomcat + redis 部署项目,解决session共享问题。
  13. c语言网吧添加卡,c语言网吧计费系统源代码.docx
  14. 恒生校招java笔试数据库语法_2015恒生电子校招笔试详解
  15. hdoj 1054 Strategic Game 最小点覆盖模版题dfs方式(Java版)
  16. WEB前端缓存解决方案
  17. 多目标跟踪入门篇(1):SORT算法详解
  18. Redis系列之——Redis-Cluster
  19. matlab 隐写分析,RS隐写分析.ppt
  20. 如何提高企业会议管理的“执行力”

热门文章

  1. nacos2.2.1集成达梦数据库
  2. 全网最牛,接口测试-Fiddler手机抓包教程(含坑),吐血总结
  3. 1938年叶企孙给熊大缜的诗
  4. 一文带你读懂Git中的rebase与fast-forward
  5. 使用Java的JDK自带工具对中文汉字进行转码
  6. 图像处理讲解-以CNN对图像进行分类为例
  7. 一文带你了解动态NAT以及NAPT实验配置
  8. ACL---NAT---NAPT---园区网
  9. What/How/Why(学习技术三部曲)
  10. linux jsoncpp,jsoncpp在linux下的配置