怎么在不使用spring框架中使用aop的功能
发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,本篇文章为大家展示了怎么在不使用spring框架中使用aop的功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Spring框架的AOP机制可以让开发者把业务
千家信息网最后更新 2025年02月23日怎么在不使用spring框架中使用aop的功能
本篇文章为大家展示了怎么在不使用spring框架中使用aop的功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
Spring框架的AOP机制可以让开发者把业务流程中的通用功能抽取出来,单独编写功能代码。在业务流程执行过程中,Spring框架会根据业务流程要求,自动把独立编写的功能代码切入到流程的合适位置。
spring提供了两种方式的AOP使用
使用xml配置方式
使用注解方式
这里需要注意的是Spring AOP目前仅仅支持方法级别的切面,成员的interception并没有实现。另外,spring aop仅仅是集成框架,并没有参与aop的具体开发。
如果想利用aop的更多功能,或者在不使用spring的框架中使用aop的功能,该怎么办呢?
AspectJ简介
spring aop集成了AspectJ(可以和java编程语言无缝结合的一个面向切面编程的可扩展框架)
AspectJ的使用实例
Eclipse Marketplace安装插件AJDT
创建Aspect工程
创建AspectJ测试类
创建一个切面Aspect文件
.aj文件
运行HelloAspectJDemo的java程序,结果为:
不使用spring的aop功能实现日志输出
第一种
public class TimeBook {undefined private Logger logger = Logger.getLogger(this.getClass().getName()); //审核数据的相关程序 public void doAuditing(String name){undefined logger.log(Level.INFO, name + "开始审核数据..."); System.out.println("审核程序"); logger.log(Level.INFO, name + "审核数据结束..."); }}//TestHelloWorld.javapackage com.gc.test;import com.gc.action.TimeBook;public class TestHelloWorld {undefined public static void main(String[] args){undefined TimeBook timeBook = new TimeBook(); timeBook.doAuditing("张三"); }}
第二种:通过面向接口编程实现日志输出
public class TimeBook implements TimeBookInterface {undefined //审核数据的相关程序 public void doAuditing(String name){undefined System.out.println("审核程序"); }}//TimeBookProxy.javapackage com.gc.action;import org.apache.log4j.Level;import org.apache.log4j.Logger;import com.gc.impl.TimeBookInterface;public class TimeBookProxy {undefined private Logger logger = Logger.getLogger(this.getClass().getName()); private TimeBookInterface timeBookInterface; //在该类中针对前面的接口TimeBookInterface编程,而不是针对具体的类 public TimeBookProxy(TimeBookInterface timeBookInterface){undefined this.timeBookInterface = timeBookInterface; } //实际业务处理 public void doAuditing(String name){undefined logger.log(Level.INFO,"开始审核数据 "+name); timeBookInterface.doAuditing(name); logger.log(Level.INFO,"审核数据结束 "+name); }}public class TestHelloWorld {undefined public static void main(String[] args){undefined TimeBookProxy timeBookProxy = new TimeBookProxy(new TimeBook()); timeBookProxy.doAuditing("张三"); }}
第三种:使用java的代理机制进行日志输出
public class LogProxy implements InvocationHandler{undefined private Logger logger = Logger.getLogger(this.getClass().getName()); private Object delegate; //绑定代理对象 public Object bind(Object delegate){undefined this.delegate = delegate; return Proxy.newProxyInstance(delegate.getClass().getClassLoader(), delegate.getClass().getInterfaces(),this); } //针对接口编程 public Object invoke(Object proxy,Method method,Object[] args) throws Throwable {undefined Object result = null; try{undefined //在方法调用前后进行日志输出 logger.log(Level.INFO,args[0]+" 开始审核数据..."); result = method.invoke(delegate, args); logger.log(Level.INFO,args[0]+" 审核数据结束..."); }catch(Exception e){undefined logger.log(Level.INFO,e.toString()); } return result; }}//TimeBookInterface.javapackage com.gc.impl;//针对接口编程public interface TimeBookInterface {undefined public void doAuditing(String name);}//TimeBook.javapublic class TimeBook implements TimeBookInterface {undefined //审核数据的相关程序 public void doAuditing(String name){undefined System.out.println("审核程序"); }}//TestHelloWorld.javapublic class TestHelloWorld {undefined public static void main(String[] args){undefined //实现了对日志类的重用 LogProxy logProxy = new LogProxy(); TimeBookInterface timeBookProxy = (TimeBookInterface)logProxy.bind(new TimeBook()); timeBookProxy.doAuditing("张三"); }}
上述内容就是怎么在不使用spring框架中使用aop的功能,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。
数据
功能
框架
程序
编程
日志
业务
接口
流程
输出
业务流程
切面
方式
张三
代码
内容
技能
文件
方法
更多
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全概念股图
网络安全检查报告模板
大学生网络安全主题新闻稿
关系数据库采用
网络安全专业就业单位
数据库排障思路
办公室共享文件服务器推荐
互联网科技更新换代
t1 数据库字典
红队技术 网络安全
杭州数字视频系统服务器
济南晟悦网络技术有限公司
增量迭代软件开发模型
传统互联网服务器
服务器托管要多久
奥迪a6l互联网科技
速达天耀s3数据库安装在哪里
数据库添加标识列
数据库的时间
mysql后面的数据库
app客户端 访问数据库
浙江省明讯网络技术有限公司
数据库中catalog
关于数据库的笔记
什么服务器系统有桌面
河北数字化城管软件开发电话
塞班软件开发
服务器mod在哪里
对数据库增删改查关键字
四会市网络安全宣传周