SpringAOP中怎么定义切点
创始人
2024-12-20 09:02:46
0次

一 配置

               

二 切面类

SystemArchitecture

package org.crazyit.app.aspect;import org.aspectj.lang.annotation.*;@Aspectpublic class SystemArchitecture{   @Pointcut("execution(* org.crazyit.app.service.impl.*.*(..))")   public void myPointcut(){}}

LogAspect

package org.crazyit.app.aspect;import org.aspectj.lang.annotation.*;import org.aspectj.lang.*;@Aspectpublic 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

package org.crazyit.app.service;public interface Hello {   // 定义一个简单方法,模拟应用中的业务逻辑方法   void foo();   // 定义一个addUser()方法,模拟应用中的添加用户的方法   int addUser(String name, String pass);}

World

package org.crazyit.app.service;public interface World {   // 定义一个简单方法,模拟应用中的业务逻辑方法   public void bar();}

四 实现类

HelloImpl

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() < 3 || name.length() > 10)    {      throw new IllegalArgumentException("name参数的长度必须大于3,小于10!");    }    return 20;  }}

WorldImpl

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()方法");  }}

五 测试类

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模拟记录日志功能...

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...