自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

江南一点雨的专栏

专注Java一百年

  • 博客(887)
  • 资源 (55)
  • 收藏
  • 关注

原创 管理员如何踢掉登录用户?

这是 Spring Security 学习小组有小伙伴提的一个问题:感觉这个问题还有点意思,拿出来和各位小伙伴一起分享下。

2024-06-17 12:21:11 602

原创 Spring Security 如何防止点击劫持

点击劫持是一种界面欺骗技术,攻击者通过隐藏真实的网页元素,诱使用户在不知情的情况下点击页面上的特定区域。这种点击可能触发恶意操作,如信息泄露、资金转账或权限授予等。攻击者利用 HTML 的iframe透明层等技术,将恶意界面叠加在合法网站之上,使得用户看似在与正常界面交互,实则执行了攻击者预设的操作。点击劫持是一种需要高度重视的网络安全风险,它利用用户界面的漏洞,悄无声息地窃取用户数据或执行恶意操作。

2024-06-14 15:35:00 367

原创 又一个小伙伴在深圳上车安家~

周边有学校医院一应俱全,老城区超大的榕树真的非常有 feel,它的枝叶茂盛,犹如一把巨大的绿伞,为过往的行人提供了一片凉爽的树荫。也有一些同学反复横跳的,回老家又来深圳,又回老家又来深圳,这种我也挺羡慕的,潇洒。从我 2017 年初来深圳到现在,身边的小伙伴就像一群在城市森林中探险的精灵,他们有的选择踏上归途,回到老家的省会城市,去追寻那份熟悉和安宁。说到底,经济趋缓,我们的心思也发生了很大的变化,当下辛苦点,将来生活也不见得会越来越好,那么不如选择活在当下,没必要把自己搞的那么辛苦。

2024-06-13 14:38:17 919

原创 事务中存在多线程,怎么处理?

在 Spring 框架中,注解作为一种声明式事务管理的关键机制,其背后的工作原理远比简单的AOP(面向切面编程)和存储更为细腻。该注解的实现核心在于Spring的(事务拦截器)以及它如何与Spring的代理机制、(事务管理器)协同工作,来确保事务的开启、提交或回滚等操作得以正确执行。

2024-06-12 15:56:55 659

原创 一文搞懂 Spring 循环依赖

首先,什么是循环依赖?@Service@Autowired@Service@AutowiredAService 和 BService 互相依赖:这个应该很好理解。

2024-06-06 12:44:06 774 1

原创 什么时候需要用到 @EnableWebSecurity 注解?

有小伙伴在学习 Spring Security 的遇到一个问题:箭头所指的位置报红,也就是 Spring 容器中没有找到一个类型为 HttpSecurity 的 Bean。小伙伴说如果他在配置类上加 @EnableWebSecurity 注解,就不报错;不加该注解则会报错。那么到底该不该加 @EnableWebSecurity 注解呢?今天就来和大伙聊一聊这个话题。

2024-06-05 11:01:50 1121

原创 Spring Security 注册过滤器注意事项

前两天和小伙伴聊了 Spring Security+JWT 实现无状态登录,然后有小伙伴反馈了一个问题,感觉这是一个我们平时写代码容易忽略的问题,写一篇文章和小伙伴们聊一聊。

2024-06-03 18:25:22 904

原创 JWT 签名用对称加密还是非对称加密?

JSON Web Token(JWT)是一种轻量级、自包含的安全标准,用于在各方之间安全地传输信息。它以 JSON 对象的形式存在,包含三个部分:Header(头部)、Payload(载荷)和Signature(签名)。JWT 被广泛应用于认证、授权和信息交换场景,如单点登录(SSO)、API 安全认证等。无状态性:服务器无需存储会话信息,降低了服务器负担。自包含:所有必要信息直接包含在 JWT 中,便于跨域传输。安全性:通过签名机制确保数据的完整性和防篡改。

2024-06-03 08:13:42 536

原创 Spring 中如何控制 Bean 的加载顺序?

当多个组件(如拦截器、过滤器、监听器等)需要按照特定的顺序执行时,

2024-06-02 19:39:28 872

原创 Maven 中的 classifier 属性用过没?

上面是我们引用别人的项目,配置 Classifier,如果要在自己的 Maven 项目中定义 Classifier,那么我们需要在 pom.xml 文件中进行相应的配置。具体来说,我们需要在 build 标签下添加插件,并为其配置classifier属性。例如,如果我们想要创建一个包含源代码的 artifact 变种,可以这样做:</</</</</</</</</</</</</</</</

2024-05-31 19:34:33 1442

原创 HttpSecurity 是如何组装过滤器链的

有小伙伴们问到这个问题,简单写篇文章和大伙聊一下。

2024-05-31 09:33:22 952

原创 最新版Spring Security 中的路径匹配方案!

Ant 风格的路径模式(Ant Path Matching)是一种用于资源定位的模式匹配规则,它源自 Apache Ant 这个 Java 构建工具。在 Ant 中,这种模式被用来指定文件系统中的文件和目录。由于其简单性和灵活性,Ant 风格的路径模式也被其他许多框架和应用程序所采用,包括 Spring Security。?:匹配任何单个字符(除了路径分隔符)。:匹配任何字符的序列(除了路径分隔符),但不包括空字符串。**:匹配任何字符的序列,包括空字符串。至少匹配一个字符的序列,并且可以跨越路径分隔符。

2024-04-22 10:56:49 1251 1

原创 一款国产的开发辅助AI插件!

百度的 Comate 插件是一款基于文心大模型的智能代码助手,它结合了百度多年积累的编程现场大数据和外部优秀开源数据,为开发者提供了全方位的编码辅助工具。这款插件的主要优势在于其智能性、丰富的应用场景、创造价值以及广泛的应用范围,能够实现“帮你想、帮你写、帮你改”的场景应用形态,从而显著提升编码效率,释放“十倍”软件生产力。具体来说,“帮你想”体现在 Comate 插件的代码解释和代码知识问答功能上。它能够对整个函数代码或部分选中代码进行解释,让开发者快速理解新代码的含义。

2024-04-17 14:48:00 1205

原创 通过方法引用获取属性名的底层逻辑是什么?

Book::getId 这就是方法引用,松哥之前也专门写过文章介绍相关内容,这里就不再多说。这里我们就单纯来说说为什么 MP 通过 Book::getId 就可以识别出来这里的属性名。

2024-04-08 16:02:18 644

原创 Spring Boot3,启动时间缩短 10 倍!

前面松哥写了一篇文章和大家聊了 Spring6 中引入的新玩意 AOT(见文章发出来之后,有小伙伴问松哥有没有做性能比较,老实说,这个给落下了,所以今天再来一篇文章,和小伙伴们梳理比较小当我们利用 Native Image 的时候,Spring Boot 启动性能从参数上来说,到底提升了多少。先告诉大家结论:启动速度提升 10 倍以上。

2024-01-31 22:18:45 2639

原创 和小伙伴们仔细梳理一下 Spring 国际化吧!从用法到源码!

国际化(Internationalization,简称 I18N)是指在 Java 应用程序中实现国际化的技术和方法。Java 提供了一套强大的国际化支持,使开发人员能够编写适应不同语言、地区和文化的应用程序。Java 国际化的主要目标是使应用程序能够在不同语言环境下运行,并提供相应的本地化体验。通过使用 Java 国际化的技术和组件,开发人员可以轻松地为 Java 应用程序提供多语言支持。

2023-11-23 10:23:33 509

原创 如何让 Bean 深度感知 Spring 容器

Spring 有一个特点,就是创建出来的 Bean 对容器是无感的,一个 Bean 是怎么样被容器从一个 Class 整成一个 Bean 的,对于 Bean 本身来说是不知道的,当然也不需要知道,也就是 Bean 对容器的存在是无感的。也就是说,虽然 Spring 中的 Bean 可以不用去感知 Spring 容器的存在,但是在实际开发中,我们往往还是需要 Spring 容器提供的各种能力,这样就迫使我们的 Bean 不得不去感知到 Spring 容器的存在。

2023-11-03 08:40:01 563

原创 Spring 冷知识:一个提前 AOP 的机会

今天再来聊一个 Spring 中的冷门知识:Bean 的处理不走正常流程,而是提前进行 AOP。本文算是前面文章()内容的一个补充,如果还没阅读前文,建议先阅读,这样有利于更好的理解本文。

2023-10-30 10:06:57 536 2

原创 Spring Bean 名称暗藏玄机,这样取名就不会被代理

一些使用小细节就是在不断的源码探索中逐步发现的,今天就来和小伙伴们聊一下通过 beanName 的设置,可以让一个 bean 拒绝被代理!

2023-10-24 11:44:15 249

原创 面试题解答:Spring Lifecycle 和 SmartLifecycle 有何区别?

当我们想在 Spring 容器启动或者关闭的时候,做一些初始化操作或者对象销毁操作,我们可以怎么做?注意我这里说的是容器启动或者关闭的时候,不是某一个 Bean 初始化或者销毁的时候~

2023-10-19 10:57:28 785

原创 @Scope 注解失效了?咋回事

这个用法也很简单,通过配置就可以设置一个 Bean 是否为单例模式。

2023-10-12 14:13:51 200

原创 Spring Boot 接口一个 JSON 字符串用两个对象去接收,这能行吗?

AbstractNamedValueMethodArgumentResolver 是一个抽象类,一些键值对类型的参数解析器都是通过继承它实现的,它里边定义了很多这些键值对类型参数解析器的公共操作。首先根据当前请求获取一个 NamedValueInfo 对象,这个对象中保存了参数的三个属性:参数名、参数是否必须以及参数默认值。

2023-10-10 10:41:34 429

原创 Spring AOP 中被代理的对象一定是单例吗?

今天我们来思考这样一个问题:在 Spring AOP 中,被代理的对象是单例的吗?当我们每次获取到代理对象的时候,都会重新获取一个新的被代理对象吗?还是被代理的对象始终是同一个?为什么要思考这个问题,因为在松哥接下来要讲的 @Scope 注解高级用法中涉及到这个知识点。

2023-10-08 11:26:41 231

原创 Spring 中三种 BeanName 生成器!

无论我们是通过 XML 文件,还是 Java 代码,亦或是包扫描的方式去注册 Bean,都可以不设置 BeanName,而 Spring 均会为之提供默认的 beanName,今天我们就来看看 Spring 中三种处理不同情况的 beanName 生成器。

2023-09-12 10:55:38 523

原创 Spring 条件注解没生效?咋回事

从 Spring4.0 开始,Spring 提供了一个更加细粒度的条件注解: ConfigurationCondition。从名字上就可以看出来这个是搭配 @Configuration 注解一起使用的,ConfigurationCondition 提供了一种更加细粒度的条件匹配,可以在配置或者 Bean 注册的时候去评估条件注解是否满足。在配置的时候评估,可能会导致当前类都不会被加载,在 Bean 注册的时候再去评估,意味着当前类就会被加载。

2023-09-11 11:41:05 367 2

原创 七种 BeanDefinition,各显其能!

AbstractBeanDefinition 是一个抽象类,它根据 BeanDefinition 中定义的接口提供了相应的属性,并实现了 BeanDefinition 中定义的一部分方法。BeanDefinition 中原本只是定义了一系列的 get/set 方法,并没有提供对应的属性,在 AbstractBeanDefinition 中将所有的属性定义出来了。后面其他的实现类也基本上都是在 AbstractBeanDefinition 的基础上完成的。

2023-09-08 09:11:21 434

原创 Spring Bean 别名处理原理分析

今天来和小伙伴们聊一聊 Spring 中关于 Bean 别名的处理逻辑。

2023-09-05 11:01:30 556

原创 FactoryBean 和它的兄弟SmartFactoryBean!

在这篇文章中,松哥也和各位小伙伴演示了了 FactoryBean 的一些具体用法,但是关于 FactoryBean 的一些具体实践,这篇文章中没有讲,那么今天我就来和大家聊一聊这个话题,顺便再来说说 FactoryBean 的兄弟 SmartFactoryBean。

2023-08-31 11:44:57 212

原创 一道经典面试题:@Configuration 和 @Component 有何区别?

无论小伙伴们之前是否背过相关的面试题,今天这篇文章学完之后相信大家对这个问题都会有更深一层的理解,废话不多少,咱们开始分析。

2023-08-29 11:44:04 525

原创 @Configuration 注解的 Full 模式和 Lite 模式!

Configuration 注解相信各位小伙伴经常会用到,但是大家知道吗,这个注解有两种不同的模式,一种叫做 Full 模式,另外一种则叫做 Lite 模式。这两种不同的模式在使用时候的表现完全不同,今天松哥就来和各位小伙伴捋一捋这两种模式。

2023-08-28 10:56:34 321

原创 似懂非懂的 AspectJ

今天想和小伙伴们聊一下我们在使用 Spring AOP 时,一个非常常见的概念 AspectJ。

2023-08-25 11:40:29 236

原创 Spring 中 @Primary 注解的原理是什么?

现在就去遍历 candidates,在遍历的时候,调用 isPrimary 方法去判断这个 BeanDefinition 上是否含有 @Primary 注解,isPrimary 方法的逻辑比较简单,我就不啰嗦了,该方法中涉及到 getMergedLocalBeanDefinition 方法去父容器中查找两个细节,这个松哥在之前的文章中也都和大家聊过了(虽然 @Priority 注解可以加在类上,也可以加在方法上,但是在具体实践中,加在方法上这个注解并不会生效,只能加在类上面。

2023-08-21 11:45:42 683

原创 Spring BeanDefinition 也分父子关系?

在 Spring 框架中,BeanDefinition 是一个核心概念,用于定义和配置 bean 的元数据,虽然在实际应用中,我们一般并不会或者很少直接定义 BeanDefinition,但是,我们在 XML 文件中所作的配置,以及利用 Java 代码做的各种 Spring 配置,都会被解析为 BeanDefinition,然后才会做进一步的处理。

2023-08-16 15:27:20 251

原创 Spring 中 @Qualifier 注解还能这么用?

这样也是一个问题解决办法。

2023-08-14 11:18:13 3140

原创 透过源码,捋清楚循环依赖到底是如何解决的!

这里我比较在意的有两个地方,一个是调用 addSingletonFactory 方法向三级缓存中添加回调函数,回调函数是 getEarlyBeanReference,如果有需要,将来会通过这个回调提前进行 AOP,即使没有 AOP,就是普通的循环依赖,三级缓存也是会被调用的,这个大家继续往后看就知道了,就这样一个简单的循环依赖,默认情况下,A 会被先加载,然后在 A 中做属性填充的时候,去创建了 B,创建 B 的时候又需要 A,就会从缓存中拿到 A,大致流程如此,接下来我们结合源码来验证一下这个流程。

2023-08-09 11:30:03 328

原创 Spring 容器原始 Bean 是如何创建的?

以下内容基于 Spring6.0.4。这个话题其实非常庞大,我本来想从 getBean 方法讲起,但一想这样讲完估计很多小伙伴就懵了,所以我们还是一步一步来,今天我主要是想和小伙伴们讲讲 Spring 容器创建 Bean 最最核心的 createBeanInstance 方法,这个方法专门用来创建一个原始 Bean 实例。松哥这里就以 Spring 源码中方法的执行顺序为例来和小伙伴们分享。

2023-08-02 11:09:50 703

原创 Spring AOP 中的代理对象是怎么创建出来的?

小伙伴们看一下,这里就是先按照类去匹配,匹配通过则继续按照方法去匹配,方法匹配器要是设置的 true,那就直接返回 true 就行了,否则就加载当前类,也就是 targetClass,然后遍历 targetClass 中的所有方法,最后调用。关于第二个 if 我多说一句,如果这里进来的是一个切面的 Bean,例如第一小节中的 LogAspect,这种 Bean 显然是不需要代理的,所以会在第二个方法中直接返回,如果是其他普通的 Bean,则第二个 if 并不会进来。

2023-07-31 10:55:50 1164

原创 听说 Spring Bean 的创建还有一条捷径?

小伙伴们看一下,这里有一个判断条件,mbd.isSynthetic 是判断是否是一个合成 Bean,这种一般都是 Spring 定义的,我们自定义的 Bean 一般都不属于这一类,然后后面的 hasInstantiationAwareBeanPostProcessors 方法则是判断当前是否存在 InstantiationAwareBeanPostProcessor 类型的后置处理器,如果存在,则进入到 if 分支中。那么 resolveBeforeInstantiation 方法存在的意义是什么呢?

2023-07-28 17:02:49 553

原创 Spring AOP 中,切点有多少种定义方式?

这应该是是小伙伴们日常工作中使用最多的两种切点定义方式了。但是除了这两种还有没有其他的呢?今天松哥就来和大家聊一聊这个话题。

2023-07-27 09:59:42 931

原创 Spring 中一个少见的引介增强 IntroductionAdvisor

说白了,就是在生成代理对象的时候,把我们在 Advisor 中设置好的接口也考虑进去,这样生成的代理对象同时也是该接口的实现类,当然,在我们提供的 Advice 中,必须也要实现该接口,否则代理对象执行接口中的方法,找不到具体实现的时候就会报错了。这就是大家比较熟悉的 JDK 动态代理了,可以看到,生成的代理对象有五个接口,生成的代理对象不仅仅是 Dog、Animal 的实例,也是 SpringProxy 等的实例。我们就从 buildProxy 方法开始看起吧,这个方法看名字就知道是用来构建代理对象的。

2023-07-24 11:11:51 568

Android开发中线程池的使用Demo

Android开发中线程池的使用Demo,详情见博客http://blog.csdn.net/u012702547/article/details/52259529

2016-08-20

Dagger2中Scope使用Demo

Dagger2中@Scope注解的使用,详见博客http://blog.csdn.net/u012702547/article/details/52213706

2016-08-15

Dagger2Demo

Dagger2使用Demo,详情见博客http://blog.csdn.net/u012702547/article/details/52200927

2016-08-14

ButterKnife使用Demo

Android注解框架ButterKnife使用Demo,详情见博客http://blog.csdn.net/u012702547/article/details/52194594

2016-08-12

Android模拟登录知乎

Android模拟登录知乎,Cookie持久化,具体请看我的博客:http://blog.csdn.net/u012702547/article/details/52156315

2016-08-09

DataBindingDemo3

Android开发中的数据绑定DataBindingDemo3,具体请看我的博客http://blog.csdn.net/u012702547/article/details/52077515

2016-07-31

DataBindingDemo2

Android开发中的数据绑定DataBindingDemo,具体请看我的博客http://blog.csdn.net/u012702547/article/details/52077515

2016-07-31

DataBindingDemo

Android开发中的数据绑定DataBindingDemo,具体请看我的博客http://blog.csdn.net/u012702547/article/details/52077515

2016-07-31

zxing的aar包

详情见博客http://blog.csdn.net/u012702547/article/details/51501350

2016-05-26

Android在线视频播放器Demo

Android在线视频播放器Demo,详见http://blog.csdn.net/u012702547/article/details/51317709

2016-05-04

Android自定义View值ProgressBar

Android自定义View值ProgressBar,详情请看http://blog.csdn.net/u012702547/article/details/51290266

2016-05-01

android自定义View之NotePad出鞘记

android自定义View之NotePad出鞘记,自定义NotePad,android自定义笔记本

2016-04-25

android自定义View之仿通讯录侧边栏滑动,实现A-Z字母检索

android自定义View之仿通讯录侧边栏滑动,实现A-Z字母检索

2016-04-24

Android中Dialog使用详解

android中AlertDialog使用详解,详细请看我的个人博客http://blog.csdn.net/u012702547/article/details/50676606

2016-02-16

ImageView的scaleType属性练习

ImageView的scaleType属性练习,具体请查看我的博客http://blog.csdn.net/u012702547/article/details/50586946

2016-01-26

snackbar使用Demo

snackbar使用demo,详情见博客http://blog.csdn.net/u012702547/article/details/50284355

2015-12-13

导航栏Demo

TabLayout使用Demo,详情见博客http://blog.csdn.net/u012702547/article/details/50273523

2015-12-12

android文件存储源码及笔记

android文件存储工具类及相关笔记,详情请查看博客http://blog.csdn.net/u012702547/article/details/50269639

2015-12-12

自定义ContentProvider

自定义ContentProvider的一个Demo,详情查看我的博客http://blog.csdn.net/u012702547/article/details/50193087

2015-12-06

GitForWindows2.6.3

由于众所周知的原因,下载该文件网速非常差,这里下载好了,大家可以直接下载。详情请见http://blog.csdn.net/u012702547/article/details/50129773

2015-12-01

flowable实战教程.pdf

251页原创flowable实战教程

2022-12-14

Spring入门.pdf

江南一点雨原创 Spring 入门教程,更多 Spring教程请关注我的 CSDN 博客:https://blog.csdn.net/u012702547

2020-02-17

SpringMVC 入门教程.pdf

江南一点雨原创 SpringMVC 入门教程,更多 SpringMVC教程请关注我的 CSDN 博客:https://blog.csdn.net/u012702547

2020-02-17

MyBatis入门教程

江南一点雨原创 MyBatis 入门教程,更多 MyBatis教程请关注我的 CSDN 博客:https://blog.csdn.net/u012702547

2020-02-17

Spring Boot2 教程.pdf.zip

江南一点雨原创 Spring Boot2 教程合集。更多Spring Boot2资料可以关注我的 CSDN博客https://blog.csdn.net/u012702547

2020-02-17

GitHub入门与实践

GitHub入门与实践,GitHub入门与实践 是本人花钱买的电子版。是一个带你入门Github的优秀书籍。此PDF带完整书签。此次上传 纯属赚点csdn积分。

2017-10-16

websocket使用案例

websocket使用入门案例,详情请见博客http://blog.csdn.net/u012702547/article/details/77655826

2017-08-28

dubbo入门案例-参考官方文档

dubbo入门案例,详情见博客http://blog.csdn.net/u012702547/article/details/77601538

2017-08-26

dubbo入门案例参考

dubbo的一个入门案例,主要参考了官方文档,详情见博客http://blog.csdn.net/u012702547/article/details/77601538

2017-08-26

Ajax上传文件Demo

Ajax上传文件Demo以及Ajax上传文件前的预览效果实现。详情见博客http://blog.csdn.net/u012702547/article/details/77585111

2017-08-25

SpringSession+Redis实现Session共享案例

SpringSession+Redis实现Session共享案例,详情请看http://blog.csdn.net/u012702547/article/details/72991283

2017-06-10

省市县三级联动数据库

省市县三级联动数据库,文件是导出的SQL语句,下载后直接执行即可。

2017-04-27

Java单元测试相关的两个jar包

Java单元测试相关的两个jar包

2017-01-13

Binder详解Demo

Binder详解Demo,详见博客http://blog.csdn.net/u012702547/article/details/52748403

2016-10-07

AIDL使用DEMO

AIDL使用DEMO,详情见博客http://blog.csdn.net/u012702547/article/details/52747989

2016-10-07

SQLBrite使用Demo

SQLBrite使用Demo,详见博客http://blog.csdn.net/u012702547/article/details/52577403

2016-09-18

干货集中营App

干货集中营App,详见博客:http://blog.csdn.net/u012702547/article/details/52566120

2016-09-17

Retrofit使用Demo

retrofit使用Demo,详见博客http://blog.csdn.net/u012702547/article/details/52143090#comments

2016-09-13

ViewPager之PageTransformer属性使用Demo

ViewPager之PageTransformer属性使用Demo,详情见博客http://blog.csdn.net/u012702547/article/details/52334161

2016-08-28

Android5.0水波纹效果Demo

Android5.0水波纹效果Demo,详见博客http://blog.csdn.net/u012702547/article/details/52325418

2016-08-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除