最大的改动是jdk低要求17,原先servlet的包名从javax改为了jakarta
1、jdk从1.8升到17,我是从oracle jdk1.8改成了Adoptium.jdk-17,基本没有影响。
2、springboot2.7升到3.1
pom直接把版本从2.7改到3.1
主要需要修改的地方有:
(1)servlet的包名从javax改为了jakarta,只是包名修改,其它没有影响。所有涉及的类都改一下吧。
(2)如有用到org.apache.httpcomponents,需要升到到httpclient5
例如我用到的RestTemplate 信任https,客户端工厂创建需要改一下,类似这样
public static HttpComponentsClientHttpRequestFactory generateHttpRequestFactory()
throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException{
SSLContext sslContext = SSLContextBuilder.create()
.loadTrustMaterial(TrustAllStrategy.INSTANCE).build();
SSLConnectionSocketFactory sslConnectionSocketFactory= SSLConnectionSocketFactoryBuilder.create()
.setSslContext(sslContext)
.setHostnameVerifier(NoopHostnameVerifier.INSTANCE).build();
PoolingHttpClientConnectionManager tttpClientConnectionManager = PoolingHttpClientConnectionManagerBuilder.create()
.setSSLSocketFactory(sslConnectionSocketFactory)
.build();
//可设置socket timeout时间,默认3分钟
// tttpClientConnectionManager.setDefaultSocketConfig(SocketConfig.custom()
// .setSoTimeout(Timeout.ofMinutes(1)).build());
CloseableHttpClient httpClient = HttpClients.custom()
.setConnectionManager(tttpClientConnectionManager)
.build();
HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();
factory.setHttpClient( httpClient );
return factory;
}
3、shiro的修改,我是从1.13升级2.0.1
(1)pom修改,由于直接2.0中很多包依然还是引用javax.servlet,因此大概调成这样。
参考了这个大神的文章:SpringBoot3 集成 Shiro_springboot3 shiro-优快云博客
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring-boot-starter</artifactId>
<classifier>jakarta</classifier>
<version>${shiro-spring.version}</version>
<exclusions>
<exclusion>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-crypto-cipher</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-crypto-hash</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-web</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-web</artifactId>
<classifier>jakarta</classifier>
<version>${shiro-spring.version}</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<classifier>jakarta</classifier>
<version>${shiro-spring.version}</version>
</dependency>
(2)有用到它的Md5Hash类的,需要改一下,换成SimpleHash。Md5Hash已经废弃了。
(3)配置文件的ShiroFilterFactoryBean需要指定bean名称,不然会报创建bean错误。大概这样
@Bean(name = "filterShiroFilterRegistrationBean")
public ShiroFilterFactoryBean shiroFilter(SecurityManager securityManager) {
……
}
4、mybatis-plus直接升到3.5.7,没有影响
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.7</version>
</dependency>
5、其它的暂时没发现什么,看着好像也没改啥,但还是折腾了半天,累死个人……