怎么在不使用spring框架中使用aop的功能
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,本篇文章为大家展示了怎么在不使用spring框架中使用aop的功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Spring框架的AOP机制可以让开发者把业务
千家信息网最后更新 2025年01月19日怎么在不使用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安全错误
数据库的锁怎样保障安全
数据库软件技术核心
施工工序数据库
幂等和数据库的唯一索引
数据库原理与应用 题库
网络安全风险评估做法
大话西游服务器开服列表
数据库登陆主界面
剑侠情缘山东服务器
大学网络安全团会策划内容
数据库多表怎么分表
中学生网络安全教育板报
操作风险损失数据库ld
宝山区数据软件开发代理品牌
航空购票系统数据库
为什么老收到网络安全的短信
催收公司网络安全整改报告
网络技术与信息安全学院排名
企业锁数据库的问题
信息网络安全杂志版面费
怎么开启许可服务器管理员
杭州app定制软件开发
查看邮件服务器ip
联想服务器管理网口
杭州软件开发者怎么报价
软件开发有职业病没
怎么实现数据库备份
网络技术的有机融合
操作风险损失数据库ld
大学生如何保护自己的网络安全
中断服务器联网测试