Spring AOP 实例
来源:互联网 发布:企业java编程思想 pdf 编辑:程序博客网 时间:2024/06/18 06:40
方式一:xml配置文件实现
BaseDao.java
package com.guo.dao;public interface BaseDao { public void insert(); public void delete(); public void update(); public void select();}
OptLogger.java
package com.guo.dao;public class OptLogger { public void myBefore() { System.out.println("before ..."); }}
UserDao.java
package com.guo.dao;public class UserDao implements BaseDao { public void insert() { System.out.println("insert()"); } public void delete() { System.out.println("delete()"); } public void update() { System.out.println("update()"); } public void select() { System.out.println("select()"); }}
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"> <bean id="userDao" class="com.guo.dao.UserDao"></bean> <bean id="optLogger" class="com.guo.dao.OptLogger"></bean> <aop:config> <aop:aspect ref="optLogger"> <aop:before method="myBefore" pointcut="execution(* com.guo.dao.UserDao.*(..))" /> </aop:aspect> </aop:config></beans>
UserDaoTest.java
package com.guo.test;import org.junit.Before;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.guo.dao.BaseDao;import com.guo.dao.UserDao;public class UserDaoTest { public ApplicationContext context; @Before public void init() { context = new ClassPathXmlApplicationContext("applicationContext.xml"); } @Test public void test1() { System.out.println("--------------无参构造实例化-----------------"); BaseDao userDao = context.getBean("userDao", BaseDao.class); // aop 有效 userDao.insert(); BaseDao userDao1 = (BaseDao) context.getBean("userDao");// aop 有效 userDao1.delete(); UserDao userDao2 = (UserDao) context.getBean("userDao");// aop 无效 userDao2.update(); BaseDao userDao3 = context.getBean("userDao", UserDao.class);// aop 无效 userDao3.delete(); UserDao userDao4 = context.getBean("userDao", UserDao.class);// aop 无效 userDao4.update(); System.out.println("end"); }}
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.guo</groupId> <artifactId>maven-spring-aop</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <!-- junit单元测试 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>4.2.0.RELEASE</version> <scope>test</scope> </dependency> <!-- spring IOC --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.2.0.RELEASE</version> </dependency> <!-- spring AOP --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>4.2.0.RELEASE</version> </dependency> </dependencies> <build> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.5.1</version> <configuration> <source>1.7</source> <target>1.7</target> <encoding>UTF-8</encoding> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>3.0.1</version> <executions> <execution> <id>attach-sources</id> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> </plugins> </build></project>
方式二:注解方法实现
只需修改方式一中的两个文件:
OptLogger.java
package com.guo.dao;import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Before;@Aspectpublic class OptLogger { @Before("execution(* com.guo.dao.UserDao.*(..))") public void myBefore() { System.out.println("before ..."); }}
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"> <bean id="userDao" class="com.guo.dao.UserDao"></bean> <bean id="optLogger" class="com.guo.dao.OptLogger"></bean> <aop:aspectj-autoproxy></aop:aspectj-autoproxy></beans>
阅读全文
0 0
- Spring AOP 入门实例
- Spring AOP 入门实例
- Spring AOP实例
- Spring AOP 实例
- Spring aop使用实例
- Spring AOP 简单实例
- spring aop 简单实例
- Spring 2.5 AOP 实例
- Spring AOP 实例
- spring AOP 入门实例
- Spring的AOP实例
- Spring Aop实例
- Spring之AOP实例
- Spring 传统AOP实例
- Spring.Net AOP实例
- Spring Aop完整实例
- Spring AOP实例
- Spring AOP 实例2
- SharedPreferences
- python---时间和时间戳的关系转换
- 为何教程那么多,你依然学不好SEO?
- SpringSession实现session共享--简单配置
- [学习笔记]WPF设置DataGrid行内容高度自适应
- Spring AOP 实例
- 代码中特殊的注释技术——TODO、FIXME和XXX的用处
- 录制Gif格式的图片
- spring---定时任务(@Scheduled注解)
- opencv2 和 opencv3冲突问题 im = cv2.imread(cur_path + '/../demo/' + im_name, cv2.IMREAD_COLOR | cv2.IMREA
- 这5大特色功能,厉害了,我的哥
- CentOS7 Python3上安装paramiko
- 主流浏览器兼容性问题与解决方案
- idea+springmvc+maven学习http接口