这一节我们以前面默认的OAuth2 客户端集成为例,来了解下配置文件的加载,示例见第二、第三节。
源码分析
InMemoryClientRegistrationRepository
假如你没有看过相关视频,或者书,但想要自己分析源码,应该怎么分析?
在分析原理之前,我们一定要找到突破口,否则就会无从下手,突破口就是之前集成Gitee OAuth的配置文件,我们分析任何框架的源码都是如此,从表象到骨髓,一层层深入。
spring:
security:
oauth2:
client:
registration:
gitee:
client-id: gitee-client-id
client-secret: gitee-client-secret
authorization-grant-type: authorization_code
redirect-uri: '{baseUrl}/login/oauth2/code/{registrationId}'
client-name: Gitee
github:
client-id: b4713d47174917b34c28
client-secret: 898389369c2e9f3d1d0ff4543ba1d9b45adfd093
provider:
gitee:
authorization-uri: https://gitee.com/oauth/authorize
token-uri: https://gitee.com/oauth/token
user-info-uri: https://gitee.com/api/v5/user
user-name-attribute: name
我们点进去,内部就是一个 OAuth2ClientProperties
类,这个类配置了 @ConfigurationProperties
注解用来加载配置文件,用IDE查找一下该类用在了哪些地方,出来很多类,在这种没法一下判断的情况下,我的办法就是一个个进去看,判断哪个类最有可能,Reactive开头的类都是在响应式环境下使用的,都可以忽略。
这里 OAuth2ClientRegistrationRepositoryConfiguration
就是我们要找的类,在该类中会加载一个 InMemoryClientRegistrationRepository
Bean,该Bean用于本地存储客户端注册信息的。
@Configuration(proxyBeanMethods = false)
@EnableConfigurationProperties(OAuth2ClientProperties.class)
@