博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java web切面编程
阅读量:5172 次
发布时间:2019-06-13

本文共 3028 字,大约阅读时间需要 10 分钟。

在我们的 web开发中  我们在 对公用的 一些方法 我们需要抽取出来   这样达到 代码的冗余   今天 我利用项目上用的AOP的 实际 应用做了一个整理

首先  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:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
            http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context-3.0.xsd
            http://www.springframework.org/schema/aop  
            http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
    <aop:aspectj-autoproxy />
    <context:component-scan base-package="com.leimingtech.platform.core.interceptors" />
    <context:component-scan base-package="com.leimingtech.cms.interceptors" />

</beans>

 
 
 
活动切面示列
 
 
import java.util.Map;
 
import javax.servlet.http.HttpServletRequest;
 
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
 
import com.leimingtech.core.common.ContentClassify;
import com.leimingtech.core.base.ContextHolderUtils;
import com.leimingtech.core.entity.ContentsEntity;
import com.leimingtech.core.entity.VoteEntity;
import com.leimingtech.core.service.SystemService;
import com.leimingtech.core.service.VoteServiceI;
import com.leimingtech.core.util.StringUtils;
 
/**
 * 投票切面类
 * @author zhangxiaoqiang
 *
 */
@Aspect
@Component
public class VoteInterceptor{
    @Autowired
    private SystemService systemService;
    @Autowired
    private VoteServiceI voteService;
    /*
    *
    *所要切面的 那个方法 类
    *
    */
    @Pointcut("execution(public * com.leimingtech.core.service.ContentsServiceI.saveContent(..))")  
    public void myMethod(){};
    /**
     * 下面用到的是织入点语法, 看文档里面有. 就是指定在该方法前执行
     * 记住下面这种通用的, *表示所有
     * @param map
     */
    @Before("myMethod()&&args(map,..)")
    public void beforeMethod(Map<String,Object> map){
        
    }
    /**
     * 正常执行完后
     * 保存内容之后,保存投票
     * @param map
     */
    @After("myMethod()&&args(map,..)")
    public void after(Map<String,Object> map){
        ContentsEntity contents = (ContentsEntity) map.get("contents");
        VoteEntity vote = (VoteEntity) map.get("vote");
        HttpServletRequest request = ContextHolderUtils.getRequest();
        //内容id
        String contentsId = request.getParameter("contentsId");
        if(StringUtils.isNotEmpty(contentsId)){
            contents= voteService.get(ContentsEntity.class, String.valueOf(contentsId));
        }
        String classify = contents.getClassify();
        if(ContentClassify.CONTENT_VOTE.equals(classify)){
            voteService.saveVote(contents, vote);
        }
    }
    /**
     * 正常执行完后
     */
    @AfterReturning("myMethod()")
    public void afterReturnning(){
        
    }
    /**
     * 抛出异常时才调用
     */
    @AfterThrowing("myMethod()")
    public void afterThrowing(){
        
    }
    
}
 
 
 

转载于:https://www.cnblogs.com/AnKangwenqiang/p/6801579.html

你可能感兴趣的文章
团队作业4——第一次项目冲刺 FiRsT DaY
查看>>
数组套字典排序
查看>>
【Selenium2】【HTMLTestRunner】
查看>>
一些常用的前端基础操作
查看>>
.Net remoting, Webservice,WCF,Socket区别
查看>>
ASP.NET Core Web读取appsettings.json中的配置
查看>>
HttpClient如何解决302重定向问题
查看>>
阅读阿里巴巴开发人员手册1
查看>>
macbook pro 2016 2017 15寸 雷电3 外接显卡 epu 简单教程(不修改UEFI)
查看>>
【知识碎片】JavaScript篇
查看>>
基于Debian的Linux发行版安装深度音乐及其插件,支持ubunut16
查看>>
java折半查找(递归版)
查看>>
java课程设计(总结)
查看>>
pandas-如何得到某一个值所在的行
查看>>
非常强的用户体验的网站功能
查看>>
webpack
查看>>
如何批量删除.svn文件
查看>>
QThread的用法:开启与退出
查看>>
javascript ajax 脚本跨域调用全解析
查看>>
《Velocity 模板使用指南》中文版[转]
查看>>