AspectJ和Tomcat结合简例!相对于JBossAOP和Tomcat要容易一点

2024-04-13 14:18

本文主要是介绍AspectJ和Tomcat结合简例!相对于JBossAOP和Tomcat要容易一点,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

由于JBoss AOP暂时的一些限制,比如不能截取系统类,和Tomcat结合起来使用比较困难,先用AspectJ来实践了一下,确实比较方便,下列代码主要展示如何实践的大概框架,简陋至极。

1.PositionManager
public abstract class PositionManager {
    protected static PositionManager self = null;
    public abstract void addPosition(Position p);    
    public static PositionManager getInstance(){
        if(self == null)
            self = new PositionManagerImpl();
        return self;
    }   
}

2.PositionManagerImpl实际实现PositionManager的业务逻辑
public class PositionManagerImpl extends PositionManager {
    protected ArrayList positions = new ArrayList();
   
    /* (non-Javadoc)
     * @see com.airinbox.jaidwapfactory.position.PositionManager#addPosition(com.airinbox.jaidwapfactory.position.Position)
     */
    public void addPosition(Position p) {
        System.out.println("add position");
        if(!positions.contains(p))
            positions.add(p);
    }
}

3.CategoryManager
public abstract class CategoryManager {
    protected static CategoryManager self = null;    
    public abstract void addCategory(Category c);
    public static CategoryManager getInstance() {
        if(self == null)
            self = new CategoryManagerImpl();
        return self;
    }
}

4.CategoryManagerImpl
public class CategoryManagerImpl extends CategoryManager {
    protected ArrayList categories = new ArrayList();
   
    /* (non-Javadoc)
     * @see com.airinbox.jaidwapfactory.Category.CategoryManager#addCategory(com.airinbox.jaidwapfactory.Category.Category)
     */
    public void addCategory(Category c) {
        System.out.println("add category");
        if(!categories.contains(c))
            categories.add(c);
    }
}

5.PositionAspect:最关键的aspect的声明,主要说明了如何截取子类的实例,如何获得方法调用的参数等等,由于方法可能会在Jsp中调用,减少麻烦,pointcut声明的时候一般不用call,而用execution。
public aspect PositionAspect {        
    after(Position p) :
        execution(void PositionManager+.addPosition(Position+))
        && args(p){
         CategoryManager cm = CategoryManager.getInstance();
         Category c = new CategoryImpl(p.getId(),p.getName());
         cm.addCategory(c);       
    }
}

发布到tomcat的时候,只要把aspectjrt.jar copy到$tomcat_home/common/lib目录下就可以了

这篇关于AspectJ和Tomcat结合简例!相对于JBossAOP和Tomcat要容易一点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/900367

相关文章

Tomcat版本与Java版本的关系及说明

《Tomcat版本与Java版本的关系及说明》:本文主要介绍Tomcat版本与Java版本的关系及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Tomcat版本与Java版本的关系Tomcat历史版本对应的Java版本Tomcat支持哪些版本的pythonJ

tomcat多实例部署的项目实践

《tomcat多实例部署的项目实践》Tomcat多实例是指在一台设备上运行多个Tomcat服务,这些Tomcat相互独立,本文主要介绍了tomcat多实例部署的项目实践,具有一定的参考价值,感兴趣的可... 目录1.创建项目目录,测试文China编程件2js.创建实例的安装目录3.准备实例的配置文件4.编辑实例的

如何将Tomcat容器替换为Jetty容器

《如何将Tomcat容器替换为Jetty容器》:本文主要介绍如何将Tomcat容器替换为Jetty容器问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Tomcat容器替换为Jetty容器修改Maven依赖配置文件调整(可选)重新构建和运行总结Tomcat容器替

Centos环境下Tomcat虚拟主机配置详细教程

《Centos环境下Tomcat虚拟主机配置详细教程》这篇文章主要讲的是在CentOS系统上,如何一步步配置Tomcat的虚拟主机,内容很简单,从目录准备到配置文件修改,再到重启和测试,手把手带你搞定... 目录1. 准备虚拟主机的目录和内容创建目录添加测试文件2. 修改 Tomcat 的 server.X

Python结合Flask框架构建一个简易的远程控制系统

《Python结合Flask框架构建一个简易的远程控制系统》这篇文章主要为大家详细介绍了如何使用Python与Flask框架构建一个简易的远程控制系统,能够远程执行操作命令(如关机、重启、锁屏等),还... 目录1.概述2.功能使用系统命令执行实时屏幕监控3. BUG修复过程1. Authorization

Tomcat的下载安装与使用教程

《Tomcat的下载安装与使用教程》本文介绍了Tomcat的下载、安装和使用方法,包括在本机和云服务器上部署Tomcat的过程,以及解决启动失败问题的方法... 目录Tomcat的下载安装与使用Tomcat的下载与安装Tomcat在本机运行使用Tomcat在php云服务器上的使用总结Tomcat的下载安装与

浅析Python中的绝对导入与相对导入

《浅析Python中的绝对导入与相对导入》这篇文章主要为大家详细介绍了Python中的绝对导入与相对导入的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1 Imports快速介绍2 import语句的语法2.1 基本使用2.2 导入声明的样式3 绝对import和相对i

Tomcat高效部署与性能优化方式

《Tomcat高效部署与性能优化方式》本文介绍了如何高效部署Tomcat并进行性能优化,以确保Web应用的稳定运行和高效响应,高效部署包括环境准备、安装Tomcat、配置Tomcat、部署应用和启动T... 目录Tomcat高效部署与性能优化一、引言二、Tomcat高效部署三、Tomcat性能优化总结Tom

通过prometheus监控Tomcat运行状态的操作流程

《通过prometheus监控Tomcat运行状态的操作流程》文章介绍了如何安装和配置Tomcat,并使用Prometheus和TomcatExporter来监控Tomcat的运行状态,文章详细讲解了... 目录Tomcat安装配置以及prometheus监控Tomcat一. 安装并配置tomcat1、安装

使用DeepSeek API 结合VSCode提升开发效率

《使用DeepSeekAPI结合VSCode提升开发效率》:本文主要介绍DeepSeekAPI与VisualStudioCode(VSCode)结合使用,以提升软件开发效率,具有一定的参考价值... 目录引言准备工作安装必要的 VSCode 扩展配置 DeepSeek API1. 创建 API 请求文件2.