Spring aop 例子

在使用spring aop的时候报错了:The prefix "aop" for element "aop:aspectj-autoproxy" is not bound.原因是有一些地址没有被引入: 输入图片说明

1 以下是一个完整配置AOP的例子。 2 3 首先是文件项目结构:

输入图片说明

SpringAOPTest.java 复制代码

1import java.util.ArrayList; 2import java.util.List; 3import org.junit.Test; 4import org.springframework.context.ApplicationContext; 5import org.springframework.context.support.ClassPathXmlApplicationContext; 6 7public class SpringAOPTest { 8 [@Test](https://my.oschina.net/azibug) public void interceptorTest(){ 9 ApplicationContext cxt = new ClassPathXmlApplicationContext("applicationContext-Test.xml"); 10 UserService userService = (UserService)cxt.getBean("userService"); 11 List list =new ArrayList(); 12 list =userService.queryUserList(); 13 System.out.println("sd:"+list.size()); 14 } 15}

复制代码

applicationContext-Test.xml 复制代码

1<?xml version="1.0" encoding="UTF-8"?> 2<beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" 4 xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jdbc="http://www.springframework.org/schema/jdbc" 5 xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" 6 7 xsi:schemaLocation=" 8 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd 9 http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd 10 http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.0.xsd 11 http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd 12 http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd 13 http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"> 14 15 16 <!-- 通过配置的方式,定义bean --> 17 <bean id="userService" class="test.UserServiceImpl"></bean> 18 19 <!-- 启用@AspectJ风格的切面声明 --> 20 <aop:aspectj-autoproxy/> 21 22 <!-- 通过配置的方式,定义日志切面bean --> 23 <bean id="aspetbean" class="test.LogInterceptor"/> 24 25 <aop:config> 26 <aop:aspect id="asp" ref="aspetbean"> 27 <!--定义切入点--> 28 <aop:pointcut id="mycut" expression="execution(* test.**.*(..))" /> 29 <!-- 第一个*代表所有的返回值类型 第二个*代表所有的类 第三个*代表类所有方法 最后一个..代表所有的参数。 --> 30 <!--定义通知(Advice)--> 31 <aop:before pointcut-ref="mycut" method="doAccessCheck" /> <!-- 前置通知 --> 32 <aop:after-returning pointcut-ref="mycut" method="doAfterReturning" /> <!-- 后置通知 --> 33 <aop:after-throwing pointcut-ref="mycut" method="doAfterThrowing" /> <!-- 例外通知 --> 34 <aop:after pointcut-ref="mycut" method="doAfter" /> <!-- 最后通知 --> 35 <aop:around pointcut-ref="mycut" method="doBasicProfiling" /> <!-- 环绕通知 --> 36 </aop:aspect> 37 </aop:config> 38</beans>

复制代码

LogInterceptor.java 复制代码

1import org.aspectj.lang.ProceedingJoinPoint; 2/** 3 * 切面 4 * 例子:日志记录 5 */ 6public class LogInterceptor { 7 public void doAccessCheck() { 8 System.out.println("前置通知"); 9 } 10 public void doAfterReturning() { 11 System.out.println("后置通知"); 12 } 13 public void doAfter() { 14 System.out.println("最终通知"); 15 } 16 public void doAfterThrowing() { 17 System.out.println("例外通知"); 18 } 19 public Object doBasicProfiling(ProceedingJoinPoint pjp) throws Throwable { 20 System.out.println("进入方法"); 21 Object result = pjp.proceed(); 22 System.out.println("退出方法"); 23 return result; 24 } 25} 26 27复制代码 28 29User.java 30复制代码 31 32public class User { 33 private String id; 34 private String name; 35 private String sex; 36 private int age; 37 public String getId() { 38 return id; 39 } 40 public void setId(String id) { 41 this.id = id; 42 } 43 public String getName() { 44 return name; 45 } 46 public void setName(String name) { 47 this.name = name; 48 } 49 public String getSex() { 50 return sex; 51 } 52 public void setSex(String sex) { 53 this.sex = sex; 54 } 55 public int getAge() { 56 return age; 57 } 58 public void setAge(int age) { 59 this.age = age; 60 } 61} 62 63复制代码 64 65UserService.java 66复制代码 67 68import java.util.List; 69public interface UserService { 70 public User queryUserById(int id); 71 public List<User> queryUserList(); 72 73}

复制代码

UserServiceImpl.java 复制代码

1import java.util.ArrayList; 2import java.util.List; 3public class UserServiceImpl implements UserService { 4 /** 5 * 通过id查询用户信息 6 */ 7 @Override 8 public User queryUserById(int id) { 9 System.out.println("=========进入queryUserById方法=========="); 10 User user = null; 11 if(id==1){ 12 user = new User(); 13 user.setAge(18); 14 user.setId("1"); 15 user.setName("张三"); 16 user.setSex("1"); 17 } 18 return user; 19 } 20 /** 21 * 查询用户列表 22 */ 23 @Override 24 public List<User> queryUserList() { 25 System.out.println("=========进入queryUserList方法=========="); 26 User user1 = new User(); 27 user1.setAge(18); 28 user1.setId("1"); 29 user1.setName("张三"); 30 user1.setSex("1"); 31 32 User user2 = new User(); 33 user2.setAge(18); 34 user2.setId("1"); 35 user2.setName("张三"); 36 user2.setSex("1"); 37 38 ArrayList<User> userList = new ArrayList<User>(); 39 userList.add(user1); 40 userList.add(user2); 41 return userList; 42 } 43}

复制代码

运行结果: 输入图片说明

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )