ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Spring中的Aop方法增强注解

2022-06-16 12:34:04  阅读:159  来源: 互联网

标签:Spring org Aop msb aspect 注解 import com public


Spring中的Aop方法增强注解

Pom.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>Spring</artifactId>
        <groupId>com.msb</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>Demo1</artifactId>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.5</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.12</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.22</version>
        </dependency>
        <!--spring切面包-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
            <version>5.3.5</version>
        </dependency>
        <!--aop联盟包-->
        <dependency>
            <groupId>aopalliance</groupId>
            <artifactId>aopalliance</artifactId>
            <version>1.0</version>
        </dependency>
        <!--Apache Commons日志包-->
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.2</version>
        </dependency>

    </dependencies>

</project>
aspect切面文件
package com.msb.aspect;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Component;
@Aspect
@Component
public class aspect {
    //定义公工切点,加入方法
    /*这里是一个公共的切入点*/
    @Pointcut("execution(* com.msb.aspect.service.impl.UserServiceImpl.add*(..))")//aspect下的所以类名所有方法
    public void  addPointCut(){
    }
    /*前置通知,在方法执行前执行*/
    @Before("addPointCut()")
    public void methodBefore(JoinPoint joinPoint){
        System.out.println("@Before前置通知");
    }
    /*后置通知,在方法执行前执行*/
    @After("addPointCut()")
    public void methodAfter(JoinPoint joinPoint){
        System.out.println("@After后置通知");
    }
    @Around("addPointCut()")
    public Object methodround(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
        System.out.println("Around方法前执行@Around(\"addPointCut()\")");
        Object proceed = proceedingJoinPoint.proceed();
        System.out.println("Around方法后执行@Around(\"addPointCut()\")");
        return proceed;
    }
    @AfterThrowing(value = "addPointCut()",throwing = "ex")
    public void methodAfterThrowing(Exception ex){
        System.out.println("AfterThrowing异常通知");
    }
    @AfterReturning(value = "addPointCut()",returning = "res")
    public void methodAfterReturning (JoinPoint joinPoint, Object res){
        System.out.println("A
                           fterReturning无异常产生方法加强·通知");
    }
}
多个接口
package com.msb.aspect.dao;
import org.springframework.stereotype.Controller;
public interface EmpDap {
    int addEmp(Integer empno,String ename,String job);
}

package com.msb.aspect.dao;
import org.springframework.stereotype.Controller;
public interface UserDao {
    int addUser(Integer userid,String username);
}

package com.msb.aspect.service;
public interface EmpService {
    int addUser(Integer userid,String username);
}

package com.msb.aspect.service;
public interface UserService {
    int addEmp(Integer empno,String ename,String job);
}

接口对应的实现类
package com.msb.aspect.dao.impl;

import com.msb.aspect.dao.EmpDap;
import org.springframework.stereotype.Repository;

@Repository//这个注解是为了加载EmpDapimpl的相关属性和方法
public class EmpDapimpl implements EmpDap {
    @Override
    public int addEmp(Integer empno, String ename, String job) {
        System.out.println("EmpDapimpl实现EmpDap调用方法addEmp");
        return 1;
    }
}

package com.msb.aspect.dao.impl;
import com.msb.aspect.dao.UserDao;
import org.springframework.stereotype.Repository;
@Repository
public class UserDaoImpl implements UserDao {
    @Override
    public int addUser(Integer userid, String username) {
        System.out.println("UserDaoImpl实现UserDao调用方法addUser");
        return 1;
    }
}

package com.msb.aspect.service.impl;
import com.msb.aspect.dao.EmpDap;
import com.msb.aspect.dao.UserDao;
import com.msb.aspect.service.EmpService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
//service层用@Service注解
@Service
public class EmpServiceImpl implements EmpService {
    @Autowired
    private UserDao userDao;//这里Autowired会自动寻找userDao相关的对象属性和方法
    @Override
    public int addUser(Integer userid, String username) {
        System.out.println("EmpServiceImpl实现EmpService调用方法addUser");
        int rows = userDao.addUser(userid, username);
        return rows;
    }
}

package com.msb.aspect.service.impl;
import com.msb.aspect.dao.EmpDap;
import com.msb.aspect.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.sql.SQLOutput;
@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private EmpDap empDap;
    @Override
    public int addEmp(Integer empno, String ename, String job) {
        System.out.println("UserServiceImpl实现UserService调用方法addEmp");
        int rows = empDap.addEmp(empno, ename, job);
        return rows;
    }
}

标签:Spring,org,Aop,msb,aspect,注解,import,com,public
来源: https://www.cnblogs.com/188221creat/p/16381541.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有