从2.x到3.x:Spring Boot升级遇到的问题!

发布于:2024-10-15 ⋅ 阅读:(59) ⋅ 点赞:(0)

从2.x到3.x:Spring Boot升级遇到的问题!


报错内容采集

1.关于redis报错

报错内容:Property ‘spring.redis.host’ is Deprecated: Use ‘spring.data.redis.host’ instead.”、“Property ‘spring.redis.password’ is Deprecated: Use ‘spring.data.redis.password’ instead.

把“spring.redis”替换成“spring.data.redis”即可。

在application.yml文件里

spring.data.redis.host=127.0.0.1
spring.data.redis.port=6379

在application.yml文件里

 web:
    resources:
      add-mappings: false
  data:
    redis:
      host: 127.0.0.1
      port: 6379
datasource:
   // druid:  去除druid
      url: jdbc:mysql://127.0.0.1:3306/supervision_dev?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&failOverReadOnly=false&serverTimezone=GMT%2B8&allowMultiQueries=true
      username: root
      password: admin

2.关于servlet报错

报错内容:The import javax.servlet cannot be resolved

把javax.servlet 替换为 jakarta.servlet

如:

import jakarta.servlet.ReadListener;
import jakarta.servlet.ServletInputStream;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletRequestWrapper;

2.关于Spring Security报错

报错内容:找不到类org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter

几乎是大家都会用去的WebSecurityConfigurerAdapter被删除了,原先继承这个的类现在无需继承任何类,只需要带上@Configuration注解。
原本配置WebSecurity和HttpSecurity的configure方法变为普通的@Bean方法,分别返回WebSecurityCustomizer和SecurityFilterChain。
原先的方法authorizeRequests变为authorizeHttpRequests、方法antMatchers变为requestMatchers。

修改自Spring Security官方博客的例子:

以前的写法

@Configuration
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
    @Override
    public void configure(WebSecurity web) {
        web.ignoring().antMatchers("/ignore1", "/ignore2");
    }
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
            .anyRequest().authenticated()
            .and()
            .httpBasic(withDefaults());
    }
}

现在的写法

@Configuration
// 不再继承于WebSecurityConfigurerAdapter
public class SecurityConfiguration {
    @Bean
    public WebSecurityCustomizer webSecurityCustomizer() {
        // WebSecurityCustomizer是一个类似于Consumer<WebSecurity>的接口,函数接受一个WebSecurity类型的变量,无返回值
        // 此处使用lambda实现WebSecurityCustomizer接口,web变量的类型WebSecurity,箭头后面可以对其进行操作
        // 使用requestMatchers()代替antMatchers()
        return (web) -> web.ignoring().requestMatchers("/ignore1", "/ignore2");
    }
    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http
            //使用authorizeHttpRequests()代替authorizeRequests()
            .authorizeHttpRequests((authz) -> authz
                //这种写法被称为Lambda DSL,代替原来的and()链式操作
                .anyRequest().authenticated()
            )
            .httpBasic(withDefaults());
        // 需要进行build(),返回SecurityFilterChain
        return http.build();
    }
}

网站公告

今日签到

点亮在社区的每一天
去签到