栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

在springboot中使用AOP

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在springboot中使用AOP

最近学习了一下aop的使用,aop在项目开发中是必备的技能,不管是面试还是日常工作都需要用到,学习一下还是很有必要的。
话不多说,直接上代码
切面类LogAspect

@Aspect
@Component
public class LogAspect {

    //    @Pointcut("@annotation(com.company.demo.annotation.LogAnnotation)")
    @Pointcut("execution(public * com.company.demo.service.LogService.testService())")
    public void logMethod() {
    }

    ;

    @Around("logMethod()")
    public Object logArround(ProceedingJoinPoint pjp) {
        Object proceed = null;
        try {
            System.out.println("环绕开始");
            proceed = pjp.proceed();
            System.out.println("环绕结束");
        } catch (Throwable e) {
            e.printStackTrace();
        }
        return proceed;
    }
}

被切的类LogService

@Service
public class LogService {

    @LogAnnotation("haha")
    public void testService(){
        System.out.println("hello world!");
    }
}

这里用两种方法进入切面,注解和execution
注解LogAnnotation代码

@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@documented
public @interface LogAnnotation {

    String value() default "";
}

这里贴下execution表达式解析

execution(modifiers-pattern? ret-type-pattern
declaring-type-pattern?name-pattern(param-pattern)
throws-pattern?)

execution(方法修饰符(可选) 返回类型 类路径 方法名 参数 异常模式(可选))

测试代码

@SpringBootTest
@RunWith(SpringRunner.class)
public class Test01 {

    @Autowired
    LogService logService;

    @Test
    public void test02(){
        logService.testService();
    }

结果

环绕开始
hello world!
环绕结束

ok! aop的简单使用就是这么多。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/769794.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号