`
yuanyannan
  • 浏览: 30757 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java aop

阅读更多
   都几个月了,总是搞这些开源的玩意,老的还没有啃完,又来了一个小的。我是天天在这几个开源的项目之间切来切去,搞得我头昏脑胀。今天是星期五,休息休息,搞下aop。
下面是Aop的入门例子,及其简单,我只是换下心情。
运用的是jdk的动态代理
a. 编写UserManagerImpl的接口UserManager
   package com.yyn.user;

   public interface UserManager {
public void addUser(String name,String password);
public void delUser(int id);
   }
b. 编写UserManagerImp.java
   package com.yyn.user;

   public class UserManagerImpl implements UserManager{

public void addUser(String name, String password) {
System.out.println("UserManagerImpl.addUser");
}

public void delUser(int id) {
System.out.println("UserManagerImpl.delUser");
}
     }
c. 编写aop 的aspect类Check.java
   package com.yyn.aspect;
   /**
    [align=left][/align]*
    * @author Administrator
    *  aop 的aspect
    */
public class Check {
/**
* aop 的advice
* **/
public void says(){
System.out.println("开始检查.....");
}
}
d. 编写aop的spring配置文件bean.xml
  <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-2.5.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-2.5.xsd
           http://www.springframework.org/schema/aop
           http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
<bean id="UserManagerImpl" class="com.yyn.user.UserManagerImpl"></bean>
<bean id="Advice" class="com.yyn.aspect.Check"></bean>
<aop:config>
<aop:aspect ref="Advice">
<aop:pointcut id="pointcut" expression="execution(* com.yyn.user.UserManagerImpl.*(..))" /><!-- 切入点表达式 -->
<aop:before pointcut-ref="pointcut" method="says"/><!--在 切入点方法之前执行检查操作 -->
</aop:aspect>
</aop:config>
</beans>
e. 开始测试
    package com.yyn.test;

    import org.springframework.beans.factory.BeanFactory;
    import   org.springframework.context.support.ClassPathXmlApplicationContext;

   import com.yyn.user.UserManager;

   public class Main {

public static void main(String[] args) {

BeanFactory bf = new ClassPathXmlApplicationContext ("beans.xml") ;
UserManager userManager =(UserManager) bf.getBean("UserManagerImpl") ;
userManager.delUser(1) ;
}


}

   
分享到:
评论
2 楼 yuanyannan 2012-08-29  
可以的哦  你可以使用java的动态代理 来编写你的自定义AOP  不过推荐使用Sping 的AOP。

java的动态代理实现AOP的简单代码如下:

public class LogHandler implements InvocationHandler {

private Object tempObj;
public LogHandler(Object delegate){
this.tempObj = delegate;
}

public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
Object obj = null;
try {
System.out.println(method + " method start!");
obj = method.invoke(tempObj,args);
System.out.println(method + " method end!");
} catch (Exception e){
System.out.println(" invoke method had an Exception! ");
}
return obj;
}
}


public static void main(String[] args) {
BusinessInterface businessImp = new BusinessObject();
InvocationHandler invocationHandler = new LogHandler(businessImp);

BusinessInterface businessProxy = (BusinessInterface) Proxy.newProxyInstance(businessImp.getClass().getClassLoader(), businessImp.getClass().getInterfaces(), invocationHandler);

businessProxy.processBusiness();
}

这里只是注册了一个handler,如果你想注册多个,自己定义一个Handler接口,然后维护一个队列存放所有Handler, 当InvocationHandler被触发的时候你去依次调用自己的Handler。
1 楼 gzc145 2012-08-22  
能不用Spring 来个纯java代码实现的动态AOP吗?

相关推荐

    java aop、ioc 、注解 实例 Demo

    Java AOP(面向切面编程)、IOC(控制反转)和注解是Java开发中的核心概念,尤其在Spring框架中被广泛应用。本实例Demo将深入探讨这三个主题,通过具体代码示例帮助理解它们的工作原理和实际用途。 AOP,即面向切面...

    aop.zip_884AOP_java aop原理_javaaop原理

    Java AOP(面向切面编程)是软件设计中的一个重要概念,它允许程序员定义“切面”,这些切面封装了特定的、与业务逻辑不直接相关的关注点,如日志、事务管理、性能监控等。AOP的核心思想是将横切关注点从核心业务...

    Aop.rar_aop_java aop 例 proxy

    在Java编程领域,AOP(Aspect Oriented Programming,面向切面编程)是一种强大的设计模式,它允许程序员将关注点从核心业务逻辑中分离出来,如日志、事务管理、性能监控等。AOP的主要思想是将这些横切关注点与主...

    Java实现aop案例

    Java AOP(面向切面编程)是一种编程范式,它允许程序员定义“切面”,这些切面封装了特定关注点的代码,如日志、事务管理、权限检查等。这样可以将这些关注点与核心业务逻辑分离,提高代码的可读性和可维护性。在...

    spring-aop.rar_java aop_spring aop

    【标题】"spring-aop.rar_java aop_spring aop" 涉及的主要知识点是Spring框架中的面向切面编程(AOP)以及Java基础知识。这个压缩包可能包含了一个简单的Spring AOP应用示例,同时也涵盖了Java的一些核心概念,如...

    AOP.rar_java aop_oracle

    Java AOP(面向切面编程)是一种编程范式,它允许程序员定义“切面”,这些切面封装了特定关注点的实现,如日志、事务管理或安全性。在本示例中,`AOP.rar` 文件显然包含了与Java AOP相关的代码实现,可能是为了改善...

    java AOP aspectjrt-1.8.14 AOP核心大集合

    Java AOP(面向切面编程)是一种编程范式,它允许程序员定义“切面”,这些切面封装了特定的关注点,如日志、事务管理或性能监控。在Java世界中,AspectJ是一个强大的AOP框架,它扩展了Java语言,提供了静态和动态...

    java aop拦截方法类前后添加日志

    在Java开发中,AOP(面向切面编程)是一种强大的设计模式,它允许程序员将关注点从业务逻辑中分离出来,比如日志记录、事务管理、性能监控等。本话题聚焦于如何使用Java AOP来在方法执行前后插入日志记录,这有助于...

    java AOP实现字段加密/解密

    Java AOP(面向切面编程)是一种编程范式,它允许程序员定义“切面”,这些切面封装了特定关注点的代码,如日志、事务管理或安全性,从而提高代码的可重用性和模块化。在Java中,Spring框架提供了对AOP的强大支持。 ...

    java AOP接口防刷代码

    Java AOP(面向切面编程)是Spring框架中的一个重要特性,它允许我们在不修改源代码的情况下,对程序进行功能增强,比如日志记录、权限控制、事务管理等。在这个"java AOP接口防刷代码"中,我们很可能是找到了一种...

    Java AOP 公共异常处理,一个没有try的项目。.zip

    Java AOP(面向切面编程)是Java编程领域中的一个重要概念,它允许程序员定义横切关注点,并将这些关注点与应用程序的业务逻辑分离。在实际开发中,公共异常处理是一个常见的AOP应用场景,用于统一处理可能出现的...

    AOP.rar_aop-bc04_it_java aop

    java aop bible must to read it

    java AOP重要概念.jpg

    java AOP重要概念.jpg

    基于AspectJ的Java AOP项目设计源码

    该项目为君匡出品,采用AspectJ技术实现的Java AOP项目示例源码。项目包含143个文件,其中84个为Java源代码文件,34个为XML配置文件,18个为Markdown文档,5个为AspectJ注解文件,1个为Git忽略配置文件,1个为YAML...

    java AOP原理以及实例用法总结

    Java AOP原理以及实例用法总结 Java AOP(Aspect-Oriented Programming,面向切面编程)是一种编程思想,旨在满足高耦合低内聚的六大原则。AOP通过将横切关注点(cross-cutting concerns)与业务逻辑分离,来提高...

    java aop demo

    Java AOP(面向切面编程)是Java编程领域中一种重要的设计模式,它允许程序员在不修改源代码的情况下,插入新的行为或增强已有功能。在本示例中,我们将探讨如何在Spring Boot框架中实现AOP,从而提高代码的可维护性...

    Java利用spring aop进行监测方法执行耗时

    使用 Spring AOP 进行方法耗时监测的好处有以下几点: 1. 代码实现简单,易于维护:使用 Spring AOP 可以将耗时监测的逻辑与业务逻辑进行解耦,避免业务逻辑代码的冗余和代码维护难度的提高。 2. 安全性高:使用 ...

    Aop.rar_aop_java aop

    AOP(Aspect Oriented Programming,面向切面编程)是Java编程领域中的一种设计模式,它扩展了传统的面向对象编程,允许程序员定义“方面”,这些方面可以包含关注点,如日志、事务管理、性能监控等,这些关注点通常...

    java Spring aop所需Jar包

    Java Spring AOP(面向切面编程)是一种强大的设计模式,它允许程序员在不修改源代码的情况下,通过插入切面来增强或修改已有代码的行为。在Spring框架中,AOP主要用于日志记录、性能监控、事务管理等场景。下面将...

Global site tag (gtag.js) - Google Analytics