
spring
文章平均质量分 72
自由圣骑士
喜欢学习、喜欢接近新事物。
展开
-
多线程事务怎么回滚
1,最近有一个大数据量插入的操作入库的业务场景,需要先做一些其他修改操作,然后在执行插入操作,由于插入数据可能会很多,用到多线程去拆分数据并行处理来提高响应时间,如果有一个线程执行失败,则全部回滚。2,在spring中可以使用@Transactional注解去控制事务,使出现异常时会进行回滚,在多线程中,这个注解则不会生效,如果主线程需要先执行一些修改数据库的操作,当子线程在进行处理出现异常时,主线程修改的数据则不会回滚,导致数据错误。3,下面用一个简单示例演示多线程事务。原创 2024-04-27 14:32:09 · 1187 阅读 · 0 评论 -
SpringBoot 接口加密解密,新姿势!
在我们日常的Java开发中,免不了和其他系统的业务交互,或者微服务之间的接口调用如果我们想保证数据传输的安全,对接口出参加密,入参解密。但是不想写重复代码,我们可以提供一个通用starter,提供通用加密解密功能自定义starter步骤创建工厂,编写功能代码声明自动配置类,把需要对外提供的对象创建好,通过配置类统一向外暴露。原创 2024-04-13 14:53:32 · 3781 阅读 · 0 评论 -
Spring Boot 如何使用拦截器、过滤器、监听器?
过滤器过滤器的英文名称为 Filter, 是 Servlet 技术中最实用的技术。如同它的名字一样,过滤器是处于客户端和服务器资源文件之间的一道过滤网,帮助我们过滤掉一些不符合要求的请求,通常用作 Session 校验,判断用户权限,如果不符合设定条件,则会被拦截到特殊的地址或者基于特殊的响应。过滤器的使用首先需要实现 Filter接口然后重写它的三个方法init 方法:在容器中创建当前过滤器的时候自动调用destory 方法:在容器中销毁当前过滤器的时候自动调用doFilter 方法:过滤的转载 2020-09-25 14:40:49 · 390 阅读 · 0 评论 -
分布式 Session 解决方案
分布式Session一致性?说白了就是服务器集群Session共享的问题Session的作用?Session 是客户端与服务器通讯会话跟踪技术,服务器与客户端保持整个通讯的会话基本信息。客户端在第一次访问服务端的时候,服务端会响应一个sessionId并且将它存入到本地cookie中,在之后的访问会将cookie中的sessionId放入到请求头中去访问服务器,如果通过这个sessionid没有找到对应的数据那么服务器会创建一个新的sessionid并且响应给客户端。分布式Session存在的问题转载 2020-07-25 18:16:48 · 171 阅读 · 0 评论 -
想用@Autowired注入static静态成员?官方不推荐你却还偏要这么做
想用@Autowired注入static静态成员?官方不推荐你却还偏要这么做转载 2020-06-15 15:39:21 · 387 阅读 · 0 评论 -
《Spring 设计思想》AOP 设计思想与原理
Spring 提供了AOP(Aspect Oriented Programming) 的支持, 那么,什么是AOP呢?本文将通过一个另外一个角度来诠释AOP的概念,帮助你更好地理解和使用Spring AOP。1. Java程序运行在JVM中的特征当我们在某个类Foo中写好了一个main()方法,然后执行java Foo,你的Java程序之旅就开启了,如下:那么在这个执行的过程中,JVM都为你干了什么呢?当你执行java Foo 的时候,JVM会创建一个主线程main,这个主线程以上述的main()转载 2020-06-08 20:14:25 · 331 阅读 · 0 评论 -
Spring 异步调用,一行代码实现!舒服,不接受任何反驳~
1. 概述在日常开发中,我们的逻辑都是同步调用,顺序执行。在一些场景下,我们会希望异步调用,将和主线程关联度低的逻辑异步调用,以实现让主线程更快的执行完成,提升性能。例如说:记录用户访问日志到数据库,记录管理员操作日志到数据库中。异步调用,对应的是同步调用。同步调用:指程序按照 定义顺序 依次执行,每一行程序都必须等待上一行程序执行完成之后才能执行;异步调用:指程序在顺序执行时,不等待异步调用的语句返回结果,就执行后面的程序。考虑到异步调用的可靠性,我们一般会考虑引入分布式消息队列,例如说 R转载 2020-05-22 18:48:04 · 607 阅读 · 0 评论 -
聊聊Spring Boot服务监控,健康检查,线程信息,JVM堆信息,指标收集,运行情况监控等!
前言去年我们项目做了微服务1.0的架构转型,但是服务监控这块却没有跟上。这不,最近我就被分配了要将我们核心的微服务应用全部监控起来的任务。我们的微服务应用都是SpringBoot 应用,因此就自然而然的想到了借助Spring Boot 的Actuator 模块。本篇是我在完成这个工单之后,对Spring Boot Actuator模块 学习应用的总结。在本篇文章中,你可以学习到:1、Spri...转载 2020-03-31 10:22:49 · 256 阅读 · 0 评论 -
简单介绍Spring Boot 自动配置原理
1. 概述Spring Boot 自动配置,顾名思义,是希望能够自动配置,将我们从配置的苦海中解脱出来。那么既然要自动配置,它需要解三个问题:满足什么样的条件?创建哪些 Bean?创建的 Bean 的属性?我们来举个示例,对照下这三个问题。在我们引入 spring-boot-starter-web 依赖,会创建一个 8080 端口的内嵌 Tomcat,同时可以通过 application...原创 2020-03-13 16:03:12 · 1076 阅读 · 0 评论 -
一起来踩踩 Spring 中这个循环依赖的坑
什么是依赖其实,不分场景地、笼统地说A依赖B其实是不够准确、至少是不够细致的。我们可以简单定义一下什么是依赖。所谓A依赖B,可以理解为A中某些功能的实现是需要调用B中的其他功能配合实现的。这里也可以拆分为两层含义:A强依赖B。创建A的实例这件事情本身需要B来参加。对照在现实生活就像妈妈生你一样。A弱依赖B。创建A的实例这件事情不需要B来参加,但是A实现功能是需要调用B的方法。对照在现实生活...转载 2020-02-01 11:32:49 · 301 阅读 · 0 评论 -
9000+ 字,彻底征服 Spring AOP ,美滋滋
基本知识其实, 接触了这么久的 AOP, 我感觉, AOP 给人难以理解的一个关键点是它的概念比较多, 而且坑爹的是, 这些概念经过了中文翻译后, 变得面目全非, 相同的一个术语, 在不同的翻译下, 含义总有着各种莫名其妙的差别. 鉴于此, 我在本章的开头, 着重为为大家介绍一个 Spring AOP 的各项术语的基本含义. 为了术语传达的准确性, 我在接下来的叙述中, 能使用英文术语的地方, ...转载 2020-01-12 17:38:29 · 215 阅读 · 0 评论 -
SpringBoot自定义请求参数校验
最近在工作中遇到写一些API,这些API的请求参数非常多,嵌套也非常复杂,如果参数的校验代码全部都手动去实现,写起来真的非常痛苦。正好Spring轮子里面有一个Validation,这里记录一下怎么使用,以及怎么自定义它的返回结果。一、Bean Validation基本概念Bean Validation是Java中的一项标准,它通过一些注解表达了对实体的限制规则。通过提出了一些API和扩展性的...原创 2019-11-29 19:40:39 · 828 阅读 · 0 评论 -
Spring Boot 实现定时任务的 4 种方式
1、定时任务实现的几种方式Timer:这是java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行,但不能在指定时间运行。一般用的较少。ScheduledExecutorService:也jdk自带的一个类;是基于线程池设计的定时任务类每个调度任务都会分配到线程池中的一个线程去执行,也就是说...原创 2019-09-27 15:32:28 · 218 阅读 · 0 评论 -
Spring 如何解决循环依赖
1. 过程演示关于Spring bean的创建,其本质上还是一个对象的创建,既然是对象,读者朋友一定要明白一点就是,一个完整的对象包含两部分:当前对象实例化和对象属性的实例化。在Spring中,对象的实例化是通过反射实现的,而对象的属性则是在对象实例化之后通过一定的方式设置的。这个过程可以按照如下方式进行理解:理解这一个点之后,对于循环依赖的理解就已经帮助一大步了,我们这里以两个类A和B...原创 2019-09-05 16:58:55 · 172 阅读 · 0 评论 -
项目重构,我是如何优化大量屎一样的 if else 代码的
1、业务场景下面对批量审单进行代码重构,其中批量审单的业务处理涉及到多种任务类型,对应不同的业务方法进行处理,比如转仓,转快递,添加赠品,删除赠品,拆分订单,批量驳回,批量作废等等,其中就用到了策略模式。1.1、if else代码 if ("BATCH_CHANGE_WAREHOUSE".equals(taskType)) { //批量转仓逻辑 } e...原创 2019-09-02 10:25:26 · 1834 阅读 · 0 评论 -
Spring 为啥默认把 Bean 设计成单例的
熟悉Spring开发的朋友都知道Spring提供了5种scope分别是 singleton、prototype、request、session、global session。今天要介绍的是这五种中的前两种,也是Spring最初提供的bean scope singleton 和 prototype。1、单例bean与原型bean的区别如果一个bean被声明为单例的时候,在处理多次请求的时候在S...原创 2019-09-02 10:06:10 · 148 阅读 · 0 评论 -
java相关的流程图
1、spring的生命周期Spring作为当前Java最流行、最强大的轻量级容器框架,了解熟悉spring的生命周期非常有必要;1、首先容器启动后,对bean进行初始化。2、按照bean的定义,注入属性。3、检测该对象是否实现了xxxAware接口,并将相关的xxxAware实例注入给bean,如BeanNameAware等。4、以上步骤,bean对象已正确构造,通过实现BeanPos...原创 2019-08-31 11:55:19 · 212 阅读 · 0 评论 -
注解的使用
Spring中的注解大概可以分为两大类:spring的bean容器相关的注解,或者说bean工厂相关的注解;springmvc相关的注解。spring的bean容器相关的注解,先后有:@Required, @Autowired, @PostConstruct, @PreDestory还有Spring3.0开始支持的JSR-330标准javax.inject.*中的注解(@Inject, @...原创 2019-08-26 10:14:44 · 605 阅读 · 0 评论