Spring [email protected]编程语言
2023-06-13 09:20:46 时间
补充一个知识点:
lombok底层原理使用的是: 字节码技术ASM修改字节码文件,生成比如类似于get() set( )方法
一定要在开发工具安装 在编译时候修改字节码文件(底层使用字节码技术),线上环境使用编译好的文件
下面我们学习 Spring Boot 异步调用技术:
[email protected] ,需要执行异步方法上加入 @Async
[email protected] 底层使用多线程技术
在底层实际上是帮助创建线程了
首先创建类:MembrController
package com.toov5.jsp;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RestController; import com.toov5.service.MemberService; import lombok.extern.slf4j.Slf4j; @RestController @Slf4j public class MemberController { @Autowired private MemberService memberService; public String addMemberAndEmail(){ log.info("1"); String result = memberService.addMemberAndEmail(); log.info("4"); return result; }
MemberService
package com.toov5.service; import org.springframework.stereotype.Service; import lombok.extern.slf4j.Slf4j; @Service @Slf4j public class MemberService { //添加用户时候发送邮件 public String addMemberAndEmail(){ log.info("2"); try { Thread.sleep(5000); } catch (Exception e) { // TODO: handle exception log.info("3"); return "toov5";我们做个分析:
这个项目是没有开线程的情况下的,代码从上往下同步进行的,log输出结果就是1 2 3 return返回结果 4 然后返回结果
看结果:
先输出1 2 然后 五秒 后 3 4 效果是同步的
下面隆重接受一个注解
@Async 相当于这个方法重新开辟了新的线程去执行
然后启动类一定要加上启动的注解!!!@EnableAsync
加上 @EnableAsync看看指定的包里面 [email protected] 加了的在运行时候通过AOP技术,创建线程去执行
执行结果:
controller的代码这样:
package com.toov5.jsp;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.toov5.service.MemberService; import lombok.extern.slf4j.Slf4j; @RestController @Slf4j public class MemberController { @Autowired private MemberService memberService; @RequestMapping("/addMemberAndEmail") public String addMemberAndEmail(){ log.info("1"); String result = memberService.addMemberAndEmail(); log.info("4"); return "result"+result; }结果:
结果值是没有拿到 主线程就后已经结束了哈 所以为 null
原理思路:
使用AOP技术,在运行时候 创建单独线程进行执行
可以这么代替:
package com.toov5.service;
相关文章
- Spring 事务底层原理
- Spring监听器-spring源码详解(五)
- Spring Boot 源码解读与原理剖析|文末赠书
- Spring Cloud Feign的文件上传实现详解编程语言
- 7天学会spring cloud教程详解编程语言
- Spring MVC 执行流程和源码分析详解编程语言
- spring boot–用于简便快捷的搭建基于spring的独立可运行的应用详解编程语言
- spring笔记二详解编程语言
- spring的AOP(三)—-Cglib动态代理详解编程语言
- spring的AOP(二)—-JDK动态代理详解编程语言
- 使用 Spring 2.5 TestContext 测试框架详解编程语言
- mq 使用Spring发送,消费topic和queue消息详解编程语言
- Spring详解(七)——AOP 注解编程语言
- Redis集群集成Spring在Java中的使用详解编程语言
- Spring Cloud 入门教程(十):和RabbitMQ的整合 — 消息总线Spring Cloud Netflix Bus详解编程语言
- Spring Boot(六): Favicon配置详解编程语言
- spring-web中的WebDataBinder理解详解编程语言
- Spring MVC的Post请求参数中文乱码的原因&处理详解编程语言
- Spring Boot2.0之纯手写框架详解编程语言
- Spring Boot(十四):spring boot整合shiro-登录认证和权限管理详解编程语言
- Spring 在xml配置里配置事务详解编程语言
- java spring boot 写入日志详解编程语言
- 组件——-(一)redis系列–安装部署redis+实现redis分布式缓存 java+Spring+redis详解编程语言