以前做的Spring AOP的小例子,今天拿来看了一下,可以作为初学者学习的一个简单demo。
做的很简单,大致是用到了AOP的注解方式。个人感觉Spring AOP真的很不错。可以做日志处理等。
先贴代码:
1. 接口 IUser.java
package com.jushi.aop;
public interface IUser {
public String findUser(String username);
public void addUser(String username);
public void findAll();
}
2. 接口实现 IUserImpl.java
package com.jushi.aop;
import java.util.HashMap;
import java.util.Map;
public class IUserImpl implements IUser {
public static Map map = null;
public static void init(){
String[] list = {"Lucy", "Tom", "小明", "Smith", "Hello"};
Map tmp = new HashMap();
for(int i=0; i<list.length; i++){
tmp.put(list[i], list[i]+"00");
}
map = tmp;
}
public void addUser(String username) {
init();
map.put(username, username+"11");
System.out.println("--------------【addUser】: "+username+" --------------");
System.out.println("【The new List:"+map+"】");
}
public void findAll() {
init();
System.out.println("---------------【findAll】: "+map+" ------------------");
}
public String findUser(String username) {
init();
String password = "没查到该用户";
if(map.containsKey(username)){
password = map.get(username).toString();
}
System.out.println("-----------------【findUser】-----------------");
System.out.println("-----------------Username:"+username+"-----------------");
System.out.println("-----------------【Result】:"+password+"------------------");
return password;
}
}
3. 拦截类 CheckUser.java
package com.jushi.aop;
import java.util.Date;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
@Aspect
public class CheckUser {
@Pointcut("execution(* com.jushi.aop.*.find*(..))")
public void checkUser(){
System.out.println("**************The System is Searching Information For You****************");
}
@Pointcut("execution(* com.jushi.aop.*.add*(..))")
public void checkAdd(){
System.out.println("**************<< Add User >> Checking.....***************");
}
@Before("checkUser()")
public void beforeCheck(){
System.out.println(">>>>>>>> 准备搜查用户..........");
}
@After("checkUser()")
public void afterCheck(){
System.out.println(">>>>>>>> 搜查用户完毕..........");
}
@Before("checkAdd()")
public void beforeAdd(){
System.out.println(">>>>>>>> 增加用户--检查ing..........");
}
@After("checkAdd()")
public void afterAdd(){
System.out.println(">>>>>>>> 增加用户--检查完毕!未发现异常!..........");
}
}
4. 实体pojo User.java
package com.jushi.entity;
public class User {
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
5. 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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<aop:aspectj-autoproxy/>
<bean id="user" class="com.jushi.aop.IUserImpl"/>
<bean id="check" class="com.jushi.aop.CheckUser"/>
<!-- <aop:config>
<aop:pointcut id="find" expression="execution(* com.jushi.aop.*.find*(..))" />
<aop:pointcut id="add" expression="execution(* com.jushi.aop.*.add*(..))" />
<aop:aspect id="checkUser" ref="check">
<aop:before method="beforeCheck" pointcut-ref="find"/>
<aop:after method="afterCheck" pointcut-ref="find"/>
</aop:aspect>
<aop:aspect id="checkAdd" ref="check">
<aop:before method="beforeAdd" pointcut-ref="add"/>
<aop:after method="afterAdd" pointcut-ref="add"/>
</aop:aspect>
</aop:config>-->
</beans>
好了,一个简单AOP demo就配置好了,测试一下
结果如下:
>>>>>>>> 增加用户--检查ing..........
--------------【addUser】: haha --------------
【The new List:{Lucy=Lucy00, Tom=Tom00, haha=haha11, Smith=Smith00, Hello=Hello00,
小明=小明00}】
>>>>>>>> 增加用户--检查完毕!未发现异常!..........
例子很小,仅供参考...
分享到:
相关推荐
**Spring AOP 简介** Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的一个重要模块,它扩展了传统的面向对象编程,允许开发者定义“横切关注点”(cross-cutting concerns),如日志、事务...
在`springAop1`这个压缩包中,可能包含了一个简单的应用示例,展示了如何定义一个切面类,以及如何在该类中定义通知方法。例如,我们可能会看到一个名为`LoggingAspect`的类,其中包含了`@Before`注解的方法,用于在...
1、spring切入点 2、spring前置织入,传入参数处理 3、spring后置织入,传入参数处理 4、环绕织入,参数及返回值处理 5、返回后织入,返回值处理 6、异常织入,异常处理 maven环境下,测试用例可直接运行
对于这个"springAOP"的Demo,很可能包含以下内容: 1. **定义切面**:通过`@Aspect`注解创建一个类作为切面,然后在这个类中定义通知。通知通常以`@Before`, `@After`, `@Around`, `@AfterThrowing`, `@After...
在"SpringAOP测试Demo"中,我们通常会涉及以下几个核心概念和操作: 1. **切面(Aspect)**:切面是关注点的一个模块化,它包括了连接点、通知、目标对象、织入和引入。在Spring AOP中,切面通常由一个或多个注解的...
压缩包中的"aop"文件可能包含了一个简单的Spring AOP示例项目,包括了上述两种实现方式的源代码和配置文件。下载后,可以直接运行以观察AOP如何工作。 总结来说,Spring AOP提供了一种强大的方式来实现横切关注点,...
在这个"springAop-demo.zip"压缩包中,我们很可能会看到一个实际的Spring AOP应用示例,让我们来详细探讨一下Spring AOP的核心概念和使用方法。 1. **切面(Aspect)**:切面是Spring AOP的核心概念,它封装了多个...
在这个实例中,我们看到了如何在Spring 3.2.8中使用AOP进行简单的日志记录。这只是AOP功能的冰山一角,实际上,你可以通过切面来处理更复杂的场景,如事务管理、性能监控、安全控制等。切记,合理地使用AOP可以极大...
Spring注解AOP(Aspect-Oriented Programming,面向切面编程)是Spring框架中的一个重要特性,它使得开发者可以在不修改原有代码的情况下,通过添加注解来实现横切关注点,如日志、事务管理等。下面我们将深入探讨...
**Spring AOP 学习笔记及实现Demo** Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架中的一个重要组成部分,它提供了一种在不修改源代码的情况下,对程序进行功能增强的技术。AOP的主要目的...
标题“Spring Aop demo”指的是一个关于Spring框架的面向切面编程(Aspect Oriented Programming,简称AOP)的示例项目。在Spring框架中,AOP用于处理系统中的横切关注点,比如日志记录、事务管理、权限验证等,这些...
Spring AOP和Hessian是两个在Java开发中广泛使用的技术,尤其在分布式系统和服务治理中。下面将详细解释这两个概念以及它们如何结合使用。 **Spring AOP(面向切面编程)** Spring AOP是Spring框架的一个重要组成...
`springAOP2`可能是一个包含具体示例代码的目录。`基于@AspectJ配置Spring AOP之一 - 飞扬部落编程仓库-专注编程,网站,专业技术.htm`和其关联的`_files`目录可能包含了一个详细的教程或演示如何配置和运行@AspectJ的...
Spring AOP(面向切面编程)是Spring框架的重要组成部分,它提供了一种强大的方式来实现代码的横切关注点,如日志记录、事务管理、性能监控等。在这个"spring aop API示例"中,我们将深入探讨如何利用Spring AOP的四...
本示例"Spring-AOP demo"旨在展示如何在Java四层架构(表示层、业务逻辑层、数据访问层和服务层)中通过注解和XML配置来实现AOP。 首先,让我们理解AOP的基本概念。AOP是一种编程范式,它允许程序员定义“切面”,...
现在我们来详细探讨Spring Boot集成AOP的基本概念、应用场景以及如何实现一个简单的Before前置通知DEMO。 1. **AOP概述** 面向切面编程是一种编程范式,旨在提高代码的可复用性和模块化。它通过将关注点分离,将横...
我们将详细探讨在"springaop-demo01"中实现的注解AOP以及"SSM-MybatisOneForOne-demo01"中的MyBatis一对一映射。 首先,让我们深入了解一下注解AOP在"springaop-demo01"中的应用。AOP(面向切面编程)是Spring框架...
本示例DEMO "Spring的AOP示例DEMO HELLOWORLD" 将引导我们深入理解Spring AOP的核心概念,并通过一个简单的 HelloWorld 示例来展示其实现过程。 首先,面向切面编程(AOP)是一种编程范式,旨在提高代码的可维护性...
Spring AOP(面向切面编程)是Spring框架的重要组成部分,它提供了一种模块化和声明式的方式来处理系统中的交叉关注点问题,如日志、事务管理等。在本示例中,我们将深入探讨如何在Maven项目中设置和使用Spring AOP...