<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Shiro框架02]]></title><description><![CDATA[jdbcRealm]]></description><link>https://blog.youkuaiyun.com/buffeer</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; buffeer]]></copyright><item><title><![CDATA[【无标题】]]></title><link>https://blog.youkuaiyun.com/buffeer/article/details/163672657</link><guid>https://blog.youkuaiyun.com/buffeer/article/details/163672657</guid><author>buffeer</author><pubDate>Tue, 11 Aug 2026 17:30:57 +0800</pubDate><description><![CDATA[TraceEagle凭借无感抓包、全协议解密、轻量化、多功能的优势，全面超越传统抓包工具，适配新手入门、专业调试、接口测试等各类场景。]]></description><category></category></item><item><title><![CDATA[第21章 OAuth2LoginAuthenticationWebFilter 之AuthenticationSuccessHandler]]></title><link>https://blog.youkuaiyun.com/buffeer/article/details/126452763</link><guid>https://blog.youkuaiyun.com/buffeer/article/details/126452763</guid><author>buffeer</author><pubDate>Sun, 21 Aug 2022 17:03:43 +0800</pubDate><description><![CDATA[当认证成功后(获取用户信息)，会进行认证成功回调。我们可以配置自定义的Handler来处理认证成功后业务代码。]]></description><category></category></item><item><title><![CDATA[第20章 OAuth2LoginAuthenticationWebFilter 之ReactiveAuthenticationManager认证授权管理器]]></title><link>https://blog.youkuaiyun.com/buffeer/article/details/126452642</link><guid>https://blog.youkuaiyun.com/buffeer/article/details/126452642</guid><author>buffeer</author><pubDate>Sun, 21 Aug 2022 17:00:04 +0800</pubDate><description><![CDATA[在上一篇我们分析了如何把请求转换成 Authentication 认证信息对象。接下来，我们将分析ReactiveAuthenticationManager如何来认证授权，它内部的工作流程是如何的。]]></description><category></category></item><item><title><![CDATA[第19章 OAuth2LoginAuthenticationWebFilter 之ServerAuthenticationConverter]]></title><link>https://blog.youkuaiyun.com/buffeer/article/details/126332582</link><guid>https://blog.youkuaiyun.com/buffeer/article/details/126332582</guid><author>buffeer</author><pubDate>Sun, 14 Aug 2022 16:02:09 +0800</pubDate><description><![CDATA[当然，如果我们不想使用默认的实现类，我们也可以自己单独配置。return http . csrf() . disable() . oauth2Login(oauth2Login -> oauth2Login // 传入自定义的 ServerAuthenticationConverter 实现类 . authenticationConverter(. . .) . build();} }...]]></description><category></category></item><item><title><![CDATA[第18章 OAuth2LoginAuthenticationWebFilter 之请求匹配器ServerWebExchangeMatcher]]></title><link>https://blog.youkuaiyun.com/buffeer/article/details/125856904</link><guid>https://blog.youkuaiyun.com/buffeer/article/details/125856904</guid><author>buffeer</author><pubDate>Mon, 18 Jul 2022 17:59:40 +0800</pubDate><description><![CDATA[在上一篇我们分析到了OAuth2LoginAuthentiationWebFilter会拦截匹配成功的请求路径。哪些请求路径会被拦截、如何去自定义要拦截的请求路径。这两个问题将是今天的主题。]]></description><category></category></item><item><title><![CDATA[第17章 OAuth2LoginAuthenticationWebFilter 源码解析]]></title><link>https://blog.youkuaiyun.com/buffeer/article/details/125703105</link><guid>https://blog.youkuaiyun.com/buffeer/article/details/125703105</guid><author>buffeer</author><pubDate>Sun, 10 Jul 2022 10:43:46 +0800</pubDate><description><![CDATA[SpringBoot OAuth2 Client的授权核心由两个过滤器来实现：OAuth2LoginAuthenticationWebFilter过滤器就是今天主要分析的主角。OAuth2LoginAuthenticationWebFilter过滤器依赖很多类：实现了如下功能：以下思维导图主要描述OAuth2LoginAuthenticatioinWebFilter依赖的类，方便我们能够对其清晰直观的了解。
OAuth2LoginAuthticationWebFilter过滤器继承了 Authenticat]]></description><category></category></item><item><title><![CDATA[第16章 OAuth2AuthorizationRequestRedirectWebFilter源码解析]]></title><link>https://blog.youkuaiyun.com/buffeer/article/details/125581270</link><guid>https://blog.youkuaiyun.com/buffeer/article/details/125581270</guid><author>buffeer</author><pubDate>Sun, 03 Jul 2022 09:52:18 +0800</pubDate><description><![CDATA[OAuth2AuthorizationRequestRedirectWebFilter 过滤器源码分析]]></description><category></category></item><item><title><![CDATA[第15章 Spring Security OAuth2 初始]]></title><link>https://blog.youkuaiyun.com/buffeer/article/details/125568799</link><guid>https://blog.youkuaiyun.com/buffeer/article/details/125568799</guid><author>buffeer</author><pubDate>Sat, 02 Jul 2022 16:13:36 +0800</pubDate><description><![CDATA[Spring Security OAuth Login 认证授权]]></description><category></category></item><item><title><![CDATA[第14章 Spring的MySQLMaxValueIncrementer深入分析与扩展]]></title><link>https://blog.youkuaiyun.com/buffeer/article/details/124360800</link><guid>https://blog.youkuaiyun.com/buffeer/article/details/124360800</guid><author>buffeer</author><pubDate>Sat, 23 Apr 2022 11:03:53 +0800</pubDate><description><![CDATA[取号这种需求在开发中有时候很常见，例如：银行办理业务时候就需求取号。那如何去实现一种高效、可靠的取号呢？对于取号这种需求，我们首先需要保证取号不能重复，也就是说保证分布式系统取号也不能重复。有可能我们会首先想到基于Redis的incr命令可以高效、快速实现，但是缺点是当Redis宕机后，有可能造成数据丢失，导致取号重复。另一种方案就是基于MySQL实现，也就是今天的主题 MySQLMaxValueIncrementer。
源码分析
创建 MySQLMaxValueIncrementer  对象时，需要指定表]]></description><category></category></item><item><title><![CDATA[第13章 Spring的@Autowired注解深入分析]]></title><link>https://blog.youkuaiyun.com/buffeer/article/details/124260747</link><guid>https://blog.youkuaiyun.com/buffeer/article/details/124260747</guid><author>buffeer</author><pubDate>Mon, 18 Apr 2022 21:56:04 +0800</pubDate><description><![CDATA[@Autowired 注解支持属性注入、构造函数、方法注入。注入点也支持普通对象注入、数组、List、Map、泛型对象注入。
@Configuration
@ComponentScan
public class AccountConfig4 {

	@Bean
	public FileService fileService() {
		return new FileService(){};
	}

	@Bean
	public FileService fileService2() {
		return ne]]></description><category></category></item><item><title><![CDATA[第12章 Spring的Import注解深入分析]]></title><link>https://blog.youkuaiyun.com/buffeer/article/details/123954810</link><guid>https://blog.youkuaiyun.com/buffeer/article/details/123954810</guid><author>buffeer</author><pubDate>Mon, 04 Apr 2022 15:46:26 +0800</pubDate><description><![CDATA[Import注解用来导入Bean对象到Spring容器中，最常用就是导入被 @Configuration 标识的配置类。@Import 注解允许导入 @Configuration 类、ImportSelector、ImportBeanDefinitionRegister的实现类。
使用
导入普通类
定义 Car 类，然后通过 @Import 注解把 Car 导入Spring容器中，无须手动注入它。
public class Car {   
}

定义配置类，使用 @Import 注解标识。注意：即时配置类]]></description><category></category></item><item><title><![CDATA[第11章 MetadataReader使用]]></title><link>https://blog.youkuaiyun.com/buffeer/article/details/123769496</link><guid>https://blog.youkuaiyun.com/buffeer/article/details/123769496</guid><author>buffeer</author><pubDate>Sun, 27 Mar 2022 10:47:59 +0800</pubDate><description><![CDATA[在上一章中，看到了 MetadataReader 的身影，这一章就来学习 MetadataReader 方法，以便以后可以借助它快速地开发。
MetadataReader
MetadataReader 是用来读取 class 的元数据的类。
public interface MetadataReader {
    // Return the resource reference for the class file.
	Resource getResource();

    // Read basic ]]></description><category></category></item><item><title><![CDATA[第10章 Spring的ComponentScan注解深入分析]]></title><link>https://blog.youkuaiyun.com/buffeer/article/details/123769383</link><guid>https://blog.youkuaiyun.com/buffeer/article/details/123769383</guid><author>buffeer</author><pubDate>Sun, 27 Mar 2022 10:46:10 +0800</pubDate><description><![CDATA[第16章 Spring的ComponentScan注解深入分析
@ComponentScan 注解和 @Configuration 注解结合使用，默认是用来扫描指定包下的被@Compoent 注解的类。@ComponentScan 注解有一些属性，如下所示。
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
@Documented
@Repeatable(ComponentScans.class)
public @interfac]]></description><category></category></item><item><title><![CDATA[CompletableFuture 异步编程]]></title><link>https://blog.youkuaiyun.com/buffeer/article/details/123755510</link><guid>https://blog.youkuaiyun.com/buffeer/article/details/123755510</guid><author>buffeer</author><pubDate>Sat, 26 Mar 2022 14:30:53 +0800</pubDate><description><![CDATA[CompletableFuture 异步编程
Java8 新增一个类 CompletableFuture，用来支持流式异步编程。
创建任务
CompletableFuture 提供一下API用来执行异步任务。
static &lt;U&gt; CompletableFuture&lt;U&gt; supplyAsync(Supplier&lt;U&gt; supplier);

static &lt;U&gt; CompletableFuture&lt;U&gt; supplyAsync(Supplier&]]></description><category></category></item><item><title><![CDATA[SpringBoot Validator]]></title><link>https://blog.youkuaiyun.com/buffeer/article/details/123648562</link><guid>https://blog.youkuaiyun.com/buffeer/article/details/123648562</guid><author>buffeer</author><pubDate>Mon, 21 Mar 2022 22:44:34 +0800</pubDate><description><![CDATA[在开发中，往往需要对应前端穿过来的参数进行校验，有时候会显得参数校验过于臃肿，但是又不得不做。这里引入 Hibernate Validator ，它支持属性、字段、返回值、方法参数、类级别的校验，而且SpringBoot可以很轻松集成。
Maven
&lt;dependency&gt;
    &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
    &lt;artifactId&gt;spring-boot-starter-validation]]></description><category></category></item><item><title><![CDATA[第一章 MinIO介绍与安装]]></title><link>https://blog.youkuaiyun.com/buffeer/article/details/123610318</link><guid>https://blog.youkuaiyun.com/buffeer/article/details/123610318</guid><author>buffeer</author><pubDate>Sun, 20 Mar 2022 11:55:35 +0800</pubDate><description><![CDATA[第一章 MinIO介绍与安装
MinIO是一个高性能对象存储方案，支持分布式部署，它的API可以与 Amazon S3 云存储服务兼容。
安装MinIO
为了简单的学习 MinIO，这里通过Docker的方式来安装。对于生产环境，官方推荐使用集群的方式来安装。
docker run \
  -p 9000:9000 \
  -p 9001:9001 \
  -e "MINIO_ROOT_USER=minio" \
  -e "MINIO_ROOT_PASSWORD=minio12345" \
  quay.]]></description><category></category></item><item><title><![CDATA[第8章 Spring加载Bean流程以及常用扩展点]]></title><link>https://blog.youkuaiyun.com/buffeer/article/details/123310886</link><guid>https://blog.youkuaiyun.com/buffeer/article/details/123310886</guid><author>buffeer</author><pubDate>Sun, 06 Mar 2022 15:18:44 +0800</pubDate><description><![CDATA[加载Bean流程
这里画了Bean加载简版流程图。主要是为了搞清楚几个扩展加载顺序。

常用扩展点
1.Aware
Aware 接口都是用来感知的。
BeanNameAware 用来感知Bean对象被容器管理的beanName
BeanClassLoaderAware 可以给Bean对象设置类加载器
BeanFactoryAware 给Bean对象设置BeanFacory对象
Spring 在初始化Bean对象时，对Aware接口的处理
private void invokeAwareMethods(Str]]></description><category></category></item><item><title><![CDATA[第7章 Spring的注解@PropertySource 使用与深入理解]]></title><link>https://blog.youkuaiyun.com/buffeer/article/details/123021484</link><guid>https://blog.youkuaiyun.com/buffeer/article/details/123021484</guid><author>buffeer</author><pubDate>Sat, 19 Feb 2022 17:46:29 +0800</pubDate><description><![CDATA[@PropertySource 注解用来增加 PropertySource 到 Spring 的 Environment 中。和 @Configuration 注解结合使用。
使用例子
给一个指定文件 app.properties 包含一个键值对 bean.name=java.lang.String。@PropertySource 会把 app.properties 放入到 Environment 里。
@Configuration
@PropertySource("classpath:/app.prope]]></description><category></category></item><item><title><![CDATA[第6章 Spring的工具类AnnotationMetadata]]></title><link>https://blog.youkuaiyun.com/buffeer/article/details/122997778</link><guid>https://blog.youkuaiyun.com/buffeer/article/details/122997778</guid><author>buffeer</author><pubDate>Fri, 18 Feb 2022 10:28:30 +0800</pubDate><description><![CDATA[Spring提供许多工具类，AnnotationMetadata 就是其中之一。AnnotationMetadata 是用来访问指定类上的注解，处理注解非常方便。本章节就是来学习一些API。
前置条件
maven需要引入Spring、assertj-core包。
代码
public class AnnotationMetadataTest {

    @Test
    void standardAnnotationMetadata() {
        AnnotationMetadata metad]]></description><category></category></item><item><title><![CDATA[第5章 仿写Spring的定时任务Task]]></title><link>https://blog.youkuaiyun.com/buffeer/article/details/122964597</link><guid>https://blog.youkuaiyun.com/buffeer/article/details/122964597</guid><author>buffeer</author><pubDate>Wed, 16 Feb 2022 15:36:44 +0800</pubDate><description><![CDATA[第5章 仿写Spring的定时任务Task
在第4章 Spring 定时任务 分析Spring实现定时任务的源码。本章节是自定义注解 @EnableScheduling2、@Scheduled2 来实现定时任务的功能。本章节主要照着Spring源码进行仿写，省略一些复杂的步骤，主要用来加深源码的理解。
考虑到代码比较多，直接贴上GitHub地址：task-joy。希望喜欢的小伙伴给一些赞????
效果
编写启动类，使用@EnableScheduling2 注解
@SpringBootApplication
]]></description><category></category></item></channel></rss>