首页 > 其他分享 >自定义异步注解

自定义异步注解

时间:2023-06-04 17:33:26浏览次数:37  
标签:info 异步 log 自定义 org annotation import 注解 public

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
</dependency>
@RestController
@Slf4j
public class Thread04 {
    @Autowired
    private OrderManage orderManage;

    @GetMapping("addOrder")
    public String addOrder(){
        log.info("1");
        //异步处理
        orderManage.asyncLog();
        log.info("3");
        log.info(Thread.currentThread().getName()+"线程执行结束");
        return "5";
    }
}
@Component
@Slf4j
public class OrderManage {

    //@Async
    @MyAsyncAnnotation//自定义的注解
    public void asyncLog(){
        log.info("目标方法执行开始");
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
        log.info(Thread.currentThread().getName()+"子线程执行结束");
    }

}

注解

import java.lang.annotation.*;

@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface MyAsyncAnnotation {
}

 

切面

import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;

@Component
@Aspect
@Slf4j
public class ThreadAsyncAop {

    /**
     * 环绕通知,拦截方法
     *
     * @param joinPoint
     * @return
     */
    @Around(value = "@annotation(boot.annotation.MyAsyncAnnotation)")
    public void around(ProceedingJoinPoint joinPoint) {
        log.info("环绕通知执行开始");
        new Thread(() -> {
            try {
                joinPoint.proceed();//目标方法--asyncLog()
            } catch (Throwable e) {
                throw new RuntimeException(e);
            }
        }).start();
        log.info("环绕通知执行结束");
    }
}

 

标签:info,异步,log,自定义,org,annotation,import,注解,public
From: https://www.cnblogs.com/ixtao/p/17455963.html

相关文章

  • Java实现AWS S3 签名 自定义验证
    前言最近在开发文件存储服务,需要符合s3的协议标准,可以直接接入aws-sdk,本文针对sdk发出请求的鉴权信息进行重新组合再签名验证有效性,sdk版本如下<dependency><groupId>software.amazon.awssdk</groupId><artifactId>s3</artifactId>......
  • Java实现AWS S3 V4 Authorization自定义验证
    前言最近在开发文件存储服务,需要符合s3的协议标准,可以直接接入aws-sdk,本文针对sdk发出请求的鉴权信息进行重新组合再签名验证有效性,sdk版本如下<dependency><groupId>software.amazon.awssdk</groupId><artifactId>s3</artifactId>......
  • django 自定义FileField upload_to上传路径
    defuser_directory_path(instance,name):"""clean_data内容:fork,vinclean_data:K:fileV:record1301DL00220230602全部.txtK:nameV:record1301DL00220230602全部.txt"""filename=name[15:2......
  • Dubbo实战篇--异步
    theme:cyanosis日期更新说明2023年6月3日初版编辑最是人间留不住,朱颜辞镜花辞树离开这段时间,发现Dubbo其实已经已经发布到了3.2了,其实有点断更。前言“异步”作为性能优化的利器之一,对于系统优化是一种常见思路;Dubbo天然的异步模式,不需要启动多线程即可完成......
  • 异步爬虫demo2
    importreimportaiohttpimportasyncioclassAsyn:def__init__(self):self.__headers={'user-agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/112.0.0.0Safari/537......
  • 包含引用类型字段的自定义结构体,能作为map的key吗
    1.引言在Go语言中,map是一种内置的数据类型,它提供了一种高效的方式来存储和检索数据。map是一种无序的键值对集合,其中每个键与一个值相关联。使用map数据结构可以快速地根据键找到对应的值,而无需遍历整个集合。在Go语言中,map是一种内置的数据类型,可以通过以下方式声明和初......
  • 包含引用类型字段的自定义结构体,能作为map的key吗
    1.引言在Go语言中,map是一种内置的数据类型,它提供了一种高效的方式来存储和检索数据。map是一种无序的键值对集合,其中每个键与一个值相关联。使用map数据结构可以快速地根据键找到对应的值,而无需遍历整个集合。在Go语言中,map是一种内置的数据类型,可以通过以下方式声明和......
  • Servlet3.0新功能: 异步处理
    2EE6和Glassfish3V正式发布了,J2EE6正式发布了Servlet3.0,为了能更好的对WEB2.0提供支持,3.0添加了异步处理的机制.HTTP1.1相对于HTTP1.0的影响.HTTP1.1最大的一个改变就是提供了长连接,这样HTTP不再是一次请求,一次连接的协议了,只要HTTP的connection不关闭,一次HTTP连接......
  • hibernate中自定义主键生成器
    自定义hibernate主键生成机制[url]http://walle1027.iteye.com/blog/1114824[/url]org.hibernate.id.MultipleHiLoPerTableGenerator主键生成器[url]http://suzefeng8806.iteye.com/blog/923511[/url][url]http://zhongrf.iteye.com/blog/972303[/url]......
  • Spring常用注解
    SVN多版本库环境的搭建OAuth2.0是什么?看这篇文章就够了。前端JavaPython等资源合集大放送使用注解之前要开启自动扫描功能,其中base-package为需要扫描的包(含子包)。<context:component-scanbase-package="cn.com.cms"/>@Configuration把一个类作为一个IoC容器,它的某个方法头上......