SpringBoot2022

spring 向spring切换

不对旧的组件进行代码修改

1、配置类

@EnableConfigurationProperties 的作用

  1. 将SsoProperties 加入到容器中
  2. 开启SsoProperties的配置绑定功能
@Configuration
@EnableConfigurationProperties(value = SsoProperties.class)
public SsoFilterConfiguration{
    
    // 形参,spring会去容器中找SsoProperties这个bean
    @Bean
    public SsoFilter ssoFilter(SsoProperties ssoProperties) {
        SsoFilter ssoFilter = new SsoFilter();
        ssoFilter.setName(ssoProperties.getName());
        ssoFilter.setPassword(ssoProperties.getPassword());
        return ssoFilter;
    }
}

2、properties

@ConfigurationProperties的作用

  1. 指定主配置文件中clair.sso前缀的值绑定到对应的属性上
@ConfigurationProperties(prefix = "clair.sso")
public SsoProperties{
    private String name;
    private String password;
    // 提供getter setter方法 不用lombok
}

3、主功能类

public SsoFilter{
    private String name;
    private String password;
    
    // getter setter
}

对旧的组件进行代码修改

@Component
@ConfigurationProperties(prefix = "clair.sso")
public SsoFilter{
    private String name;
    private String password;
    
    
    
    // getter setter
}

注意,两种方式不能共存

自动配置原理

  1. springboot 装载所有的自动配置类
  2. 根据条件,判断自动配置类是否生效。每个配置类都会绑定一个xxxProperties。我们可以再配置文件中指定xxxProperties的值,从而实现对组件属性的自定义配置
  3. 生效的自动配置类,再根据各种条件判断是否往容器中添加各种组件
  4. 只要用户自己配置了,就以用户的优先(通过 @ConditionalOnMissingBean实现)

定制化配置

方式一:用户自己通过@Bean注解,定制bean

方式二:用户根据在配置文件中指定xxxProperties对应的属性的值,从而达到定制组件属性的目的

暂时
0f558329bf3fc260b397f2b07fc8305.png
e29cabf91a458871acb835aeddcf67a.png
058455781cbb9ed9e51b57f21abc352.png

filter执行的顺序就是其声明在springmvc中的顺序
image.png
https://www.zhihu.com/questio...


zztracy
7 声望0 粉丝

« 上一篇
JWT+Shiro认证