zoukankan      html  css  js  c++  java
  • Java web切面编程

    在我们的 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(){
            
        }
        
    }
     
     
     
  • 相关阅读:
    Oracle sql的基本优化写法和思路。
    Linux的简单介绍和开发基本运维时候用到的命令
    Nginx的使用(反向代理,负载均衡)
    Mybatis传值为空需要配置JdbcType来解决吗?(XML文件不需要配置JdbcType)
    Mybatis Blob和String互转,实现文件上传等。
    Ckeditor上传图片返回的JS直接显示出来,未执行!!!
    学习中的错误——ubuntu 14.04 LTS 启动eclipse报错
    2016计算机大会后记——机器学习:发展与未来
    2016计算机大会后记——大数据时代的模式识别
    近期编程问题——epoll failed:bad file descriptor
  • 原文地址:https://www.cnblogs.com/AnKangwenqiang/p/6801579.html
Copyright © 2011-2022 走看看