Spring系列专题
文章平均质量分 88
Spring系列相关的文档
知行-wts
这个作者很懒,什么都没留下…
展开
-
Springboot高级(IDEA版)
2 months agospringan hour read (About 12844 words)springboot高级本文分别从缓存、消息、检索、任务、安全、分布式、热部署和监控管理方面,对spring boot高级部分做了简单总结,内容不深但覆盖全。(一) Spring Boot与缓存一、 JSR107Java Caching定义了5个核心接口 CachingProvider 定义了创建、配置、获取、管理和控制多个CacheManager。一个应用可 以在运行期访原创 2020-07-29 08:46:54 · 841 阅读 · 1 评论 -
Springboot2.X用generator逆向工程生成代码
1.创建generatorConfig.xml文件放到resource下配置文件内容:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generato原创 2020-08-05 21:30:45 · 219 阅读 · 0 评论 -
SpringBoot项目实战 - SpringBoot使用RedisTemplate
一、Redis入门 - 数据类型:5种基础数据类型详解Redis所有的key(键)都是字符串。我们在谈基础数据结构时,讨论的是存储值的数据类型,主要包括常见的5种数据类型,分别是:String、List、Set、Zset、Hash1、Redis数据结构简介Redis基础文章非常多,关于基础数据结构类型,我推荐你先看下官方网站内容 ,然后再看下面的小结首先对redis来说,所有的key(键)都是字符串。我们在谈基础数据结构时,讨论的是存储值的数据类型,主要包括常见的5种数据类型,分别是:Str原创 2022-04-30 23:53:30 · 5154 阅读 · 0 评论 -
SpringBoot项目实战 - SpringBoot配置日志文件lomback.xml
2. yml中引用配置文件记录请求日志,每天一个日志文件,最多保留30天,以地市为单位建立单独的目录。(这里我们以山东省为例)3. yml中引用配置文件5、使用案例原创 2022-05-24 14:07:28 · 584 阅读 · 0 评论 -
SpringBoot项目实战 - SpringBoot改成Https请求
https是我起的keystore的名字。别名alias也叫https。validity 是有效期(单位为天)大家应该看到最后的警告信息了:JKS 密钥库使用专用格式。建议使用 “” 迁移到行业标准格式 PKCS12。他给出的命令可以直接复制使用,粘贴到命令窗口。回车就行。输入源密钥库口令: --还是123456已成功导入别名 https 的条目。...原创 2022-08-18 10:35:15 · 2485 阅读 · 0 评论 -
SpringBoot项目实战 - SpringBoot实现请求参数与响应参数加解密
Target({* @description: 参数加密设置/*** 入参是否解密,默认解密/*** 返回是否加密,默认加密。原创 2023-03-10 11:00:23 · 4235 阅读 · 1 评论 -
SpringBoot项目实战 - API接口限流
该注解主要用于AOP功能的切入,不需要属性@Target({//限流的方法名 double value() default 0d;//发放的许可证数量 }通过来获取令牌,当然也可以通过来设置等待超时时间的方式获取令牌,如果超timeout为0或则调用无参的tryAcquire(),则代表非阻塞,获取不到立即返回,支持阻塞或可超时的令牌消费。/*** 存储限流量和方法必须是static且线程安全/*** 业务层切点try {//获取目标对象 Class原创 2023-07-08 12:24:07 · 3995 阅读 · 0 评论 -
SpringBoot项目实战 - 使用RetryTemplate优雅的重试
日常开发中,经常会遇到这样的场景:执行一次接口调用,如RPC调用,偶现失败,原因可能是dubbo超时、连接数耗尽、http网络抖动等,出现异常时我们并不能立即知道原因并作出反应,可能只是一个普通的RpcException或RuntimeException,对于这种小概率的异常,往往需要尝试再次调用(),因为由于网络问题、下游服务暂时的不稳定导致的异常,一段时间后理论上是可以自恢复的;例如,有时候项目需要进行同步数据,一定要同步成功,不然对于业务会有影响,偶发性的会出现调用接口失败,失败并不是特别多;原创 2024-01-12 15:58:56 · 1686 阅读 · 0 评论 -
权限管理框架 - Shiro
第一章 入门概述1.1 是什么Apache Shiro 是一个功能强大且易于使用的 Java 安全(权限)框架。Shiro 可以完成:认证、授权、加密、会话管理、与 Web 集成、缓存 等。借助 Shiro 您可以快速轻松地保护任何应用程序——从最小的移动应用程序到最大的 Web 和企业应用程序。官网:https://shiro.apache.org/1.2 为什么要用 Shiro自 2003 年以来,框架格局发生了相当大的变化,因此今天仍然有很多系统在使用Shiro。这与 Shiro 的特性密原创 2024-04-09 22:05:48 · 2857 阅读 · 0 评论 -
Spring源码深度解析:二十一、事务实现⑤ - 事务的提交
如果事务被设置了回滚标识,则不会提交,直接回滚如果事务中有保存点信息则不会提交事务操作。如果事务非新事务的时候也不会去执行提交事务操作。原创 2022-12-13 15:51:43 · 821 阅读 · 0 评论 -
Spring源码深度解析:二十、事务实现④ - 事务的回滚
我们下面来看看回滚的具体操作即即 中的方法// 执行回滚 processRollback(defStatus , false);} . . . . // 省略了日志打印 private void processRollback(DefaultTransactionStatus status , boolean unexpected) {try {try {原创 2022-12-13 15:35:52 · 790 阅读 · 0 评论 -
Spring源码深度解析:十九、事务实现③ - 事务的创建
的功能是根据需要创建事务。这里面考虑到嵌套事务的情况,并对事务的传播属性进行了相应的处理,最终处理后。返回的是一个的值,里面封装了事务的各种信息,供给后面的回滚或者提交使用。以上:内容部分参考《Spring源码深度解析》如有侵扰,联系删除。内容仅用于自我记录学习使用。如有错误,欢迎指正。原创 2022-12-13 15:11:24 · 391 阅读 · 0 评论 -
Spring源码深度解析:十八、事务实现② - ProxyTransactionManagementConfiguration
方法的实现在其父类中实现的// 获取事务属性,如果 public TransactionAttribute getTransactionAttribute(Method method , @Nullable Class原创 2022-12-13 14:10:16 · 847 阅读 · 0 评论 -
Spring源码深度解析:十七、事务实现① - AutoProxyRegistrar
文章目录:Spring源码深度解析:文章目录由于事务的源码和前篇的Aop源码逻辑很类似,所以本篇中某些内容不会展开去讲解,建议先阅读完全集目录中的Aop部分,再来阅读本文会更好理解。我们在Springboot 中开始事务管理很简单,使用注解即可。那么也就说明是我们分析的入口了。很明显了指向我们去看去看的实现。可以看到,间接实现了接口,这里简单提一下就是会根据返回的字符串数组(一般是类的全路径名) 通过反射加载该类并注册到容器中。所以我们这里必然来看一下方法了,的实现在其父类ImportSelector原创 2022-12-13 11:13:10 · 458 阅读 · 0 评论 -
Spring源码深度解析:十六、@Aspect方式的AOP下篇 - createProxy
/ 这里的入参 beanClass :当前BeanClass, // beanName : 当前BeanName // specificInterceptors : 中篇中寻找出来的 Advisor // targetSource : SingletonTargetSource 目标类是单例 拥有给定对象的TargetSource接口的实现。这是Spring AOP框架使用的TargetSource接口的默认实现。通常不需要在应用程序代码中创建此类的对象。原创 2022-12-12 21:51:04 · 621 阅读 · 0 评论 -
Spring源码深度解析:十五、@Aspect方式的AOP中篇 - getAdvicesAndAdvisorsForBean
方法的作用就是筛选出适用于当前bean的Advisor。简单来说就是两步挑选出所有的Advisor。在 其中 通过调用了来完成了对硬编码注入的Advisor的获取解析返回。随后通过方式解析了 Aop 注解方式动态封装的Advisor并保存。通过Advisor中的Pointcut筛选出适合当前bean的Advisor。以上:内容部分参考《Spring源码深度解析》如有侵扰,联系删除。内容仅用于自我记录学习使用。如有错误,欢迎指正。原创 2022-12-12 21:05:58 · 738 阅读 · 0 评论 -
Spring源码深度解析:十四、@Aspect方式的AOP上篇 - @EnableAspectJAutoProxy
Aop 即面向切面编程,而 Aspect 是Aop 思想的一种实现。并不是所有的AOP框架都相同,它们在连接点模型上可能有强弱之分,有些允许在字段修饰符级别的应用通知,有些只支持方法调用相关的连接点。需要注意的是 Spring 只支持方法级别的连接点。Spring 提供了4种类型的AOP支持基于代理的经典Spring Aop纯Pojo切面@Aspect注解驱动的切面注入式的Aspectj的切面。原创 2022-12-12 21:03:47 · 867 阅读 · 0 评论 -
Spring源码深度解析:十三、JdbcTemplate 的源码分析
考虑到存在事务的情况,如果当前线程存在事务,那么说明在当前线程中存在共用数据库连接(存在事务则说明不止一个sql 语句被执行,则会共用同一个数据库连接, 所以如果当前Sql执行完毕,不能立即关闭数据库连接,而是将引用次数减一),这种情况下直接使用。对于警告的处理方式并不是直接抛出异常,出现警告很可能会出现数据错误,但是并不一定会影响程序执行,所以这里用户可以自己设置处理警告的方式,如果默认是忽略警告,当出现警告时仅打印警告日志,不抛出异常。如有侵扰,联系删除。除此之外,还有另一种形式的更新,其思路都相同。原创 2022-12-12 13:50:33 · 963 阅读 · 0 评论 -
Spring源码深度解析:十二、后处理器 BeanPostProcessor
是 Spring提供给我们的一个非常重要的扩展接口,并且Spring内部的很多功能也是通过来完成的(目前看到最典型的就是的 注入)。日常使用中,我们一般编写一个类来实现或者接口,根据每个方法的调用时机,来完成响应的工作。下面介绍一下接口方法,这里通过接口来介绍。是的子接口,在基础上又扩展了三个方法。原创 2022-12-08 15:51:48 · 744 阅读 · 0 评论 -
Spring源码深度解析:十一、Spring的循环依赖
文章目录:Spring源码深度解析:文章目录这篇文章是接着 Spring源码深度解析:七、bean的加载① - doGetBean 的继续分析过程。循环依赖,其实就是循环引用,就是两个或者两个以上的 bean 互相引用对方,最终形成一个闭环,如 A 依赖 B,B 依赖 C,C 依赖 A。如下图所示:循环依赖,其实就是一个死循环的过程,在初始化 A 的时候发现引用了 B,这时就会去初始化 B,然后又发现 B 引用 C,跑去初始化 C,初始化 C 的时候发现引用了 A,则又会去初始化 A,依次循环永不退出,原创 2022-12-07 16:20:23 · 611 阅读 · 0 评论 -
Spring源码深度解析:十、bean的属性注入④ - populateBean
文章目录:Spring源码深度解析:文章目录这篇文章是接着 Spring源码深度解析:八、bean的获取② - getSingleton 的继续分析过程。Spring在 方法中,完成了bean的完整创建。而在上篇 Spring源码深度解析:九、bean的获取② - createBeanInstance 中,完成了Bean的创建,但是属性内容还没有注入,本文就是将bean的属性进行注入的过程。本文涉及部分 BeanPostProcessor 内容,如需详阅 :AbstractAutowireCapable原创 2022-12-06 15:56:47 · 623 阅读 · 1 评论 -
Spring源码深度解析:九、bean的获取③ - createBeanInstance
的流程图如下,让我们根据流程图一步一步的学习一下spring是如何创建bean的吧文章目录:Spring源码分析:文章目录这篇文章应该是接着 Spring源码深度解析:八、bean的获取② - getSingleton 的继续分析过程。本文主要是分析的方法是,功能是Spring 具体创建bean的过程。调用如下:根据方法名就知道,是创建bean的实例,也就注定了这个方法的不平凡。下面就来一步一步的剖析他。具体源码如下:我们可以看到:下面我们来解析代码。这部分的功能 : 若中设置了则使用 提供的bea原创 2022-11-24 16:49:09 · 705 阅读 · 0 评论 -
Spring源码深度解析:八、bean的获取② - getSingleton
上面可以看到,主要步骤还是在回调的方法中。那么我们来看看在bean加载过程中的做了什么。代码如下:兜了一大圈关键代码还是在方法里。接下来,我们就来仔细分析一下方法。// 1. 锁定class, 根据mdb和beanName解析出来class Class原创 2022-11-23 17:25:12 · 728 阅读 · 0 评论 -
Spring源码深度解析:六、ConfigurationClassPostProcessor
文章目录:Spring源码分析:文章目录是非常重要的一个 后处理器。 完成了 配置类的解析和保存以及注解、等注解的解析工作 。将所有需要注入的bean解析成保存到中。首先来讲解一下的结构图如下。可见接口实现了(的后处理器)(设置自己的优先级为最高) 和各种接口。在启动后,会通过来创建应用上下文,默认请情况下我们一般创建作为应用上下文。而在构造函数中会创建。而在构造函数中会调用 ,该方法将一些必要Bean(如、、等)注入到了容器中。我们这里重点看的是接口的两个方法:关于这两个方法的调用时机和作用,我原创 2022-11-22 16:33:15 · 717 阅读 · 0 评论 -
Spring源码深度解析:七、bean的加载① - doGetBean
getBean()方法是spring ioc的核心,阅读getBean()方法的源码也是理解spring容器工作原理所必须要做的事情!我们先来看一下getBean()方法,getBean()的具体实现逻辑在方法中。Spring源码分析:文章目录下面我们开始进入正题,进行的内容分析。这个方法是一切的核心(Bean的创建过程也是在这个方法中完成)。首先我们先来整体过一遍方法代码。后面将会对一些关键点进行详细解释。// 1. 提取出对应的beanName。原创 2022-11-22 16:33:35 · 862 阅读 · 0 评论 -
Spring源码深度解析:五、BeanFactoryPostProcessor的处理
Spring源码分析:文章目录本文分析的方法是AbstractApplicationContext#invokeBeanFactoryPostProcessors方法解析配置类(这里的配置类不仅仅局限于注解,还包括@Import、等注解),将解析到的需要注入到Spring容器中的bean的保存起来解析bean中的 需要自动注入的bean@Autowired和注解。原创 2022-11-02 00:01:37 · 1468 阅读 · 0 评论 -
Spring源码深度解析:四、Spring配置文件加载流程
接下来我们学习Spring配置文件加载流程,主要加载xml配置文件的属性值到当前工厂中,最重要的就是BeanDefinitionAbstractApplicationContext#obtainFreshBeanFactory()首先我们debug进入spring的刷新方法,接着进入子方法该方法先创建容器对象:,然后加载xml配置文件的属性值到当前工厂中,最重要的就是BeanDefinition。具体代码如下:AbstractApplicationContext#refreshBeanFactory()原创 2022-10-30 23:02:30 · 2570 阅读 · 0 评论 -
Spring源码深度解析:三、容器的刷新 - refresh()
实例化并调用所有注册的BeanFactoryPostProcessor Bean,并遵循显式顺序(如果给定的话)。必须在单例实例化之前调用。BeanFactory 作为Spring中容器功能的基础,用于存放所有已经加载的bean,为了保证程序的可扩展性,Spring针对BeanFactory做了大量的扩展,如PostProcessor。这一步的功能主要是激活各种。原创 2022-10-26 17:29:34 · 1578 阅读 · 1 评论 -
Spring源码深度解析:二、手写模拟Spring
文章目录:Spring源码深度解析:文章目录我们在学习Spring源码之前,我们先整体的了解一下Spring容器由哪些组成,主要是由于IOC和AOP构成。然后自己先模拟手写一下Spring容器的整体架构,这样通过简单地demo让我们更加通俗的理解一个Spring容器主要做了哪些事情。方便为我们后面学习Spring源码。1、创建两个包名创建启动类:com.wts.spring.WtsApplicationContext创建一个业务类和测试类:业务类:com.wts.service.UserServ原创 2022-10-12 13:23:49 · 1093 阅读 · 0 评论 -
Spring源码深度解析:一、Spring整体架构和源码环境搭建
Spring Core:框架的最基础部分,提供 IoC 容器,对 bean 进行管理。Spring Context:继承BeanFactory,提供上下文信息,扩展出JNDI、EJB、电子邮件、国际化等功能。Spring DAO:提供了JDBC的抽象层,还提供了声明性事务管理方法。Spring ORM:提供了JPA、JDO、Hibernate、MyBatis 等ORM映射层.Spring AOP:集成了所有AOP功能。原创 2022-09-14 22:15:40 · 2411 阅读 · 1 评论 -
Spring源码深度解析:文章目录
文章目录:原创 2022-09-04 09:50:21 · 1390 阅读 · 0 评论 -
SpringBoot项目实战 - 同一事物下使用动态多数据源报错问题
springboot 动态多数据源事务原创 2022-01-14 14:38:30 · 780 阅读 · 0 评论 -
SpringBoot基础(IDEA版)
一、Spring Boot 入门1、Spring Boot 简介> 简化Spring应用开发的一个框架;>> 整个Spring技术栈的一个大整合;>> J2EE开发的一站式解决方案;2、微服务2014,martin fowler微服务:架构风格(服务微化)一个应用应该是一组小型服务;可以通过HTTP的方式进行互通;单体应用:ALL IN ONE微服务:每一个功能元素最终都是一个可独立替换和独立升级的软件单元;[详细参照微服务文档]原创 2020-05-20 21:28:14 · 1716 阅读 · 1 评论 -
SpringBoot2.0+版本和以前版本相比出现的一些问题
1、SpringBoot访问html必须是html5的版本,html4不能访问报4052、不支持put、delete请求,需在application.properties配置文件里手动配置:spring.mvc.hiddenmethod.filter.enabled=true3、SpringBoot2.0+拦截器后 , 静态资源会被拦截问题;在2.0之前的spring boot拦截器是不会拦截静态资源的拦截器处理方法实现自定义拦截器只需要3步:1、创建我们自己的拦截器类并实现 .原创 2020-05-26 19:35:56 · 966 阅读 · 0 评论 -
SpringBoot获取上下文,随时取出被spring管理的bean对象
方法一:第一步:实现ApplicationContextAware,重写setApplicationContext方法。这个方式下,工具类也被注册成了Bean,既然这样,那就必须确保该类能被Spring自动扫描到。import org.springframework.beans.BeansException;import org.springframework.context.ApplicationContext;import org.springframework.context.Appli原创 2020-12-04 10:31:59 · 279 阅读 · 1 评论