Java8 upgrade java21
1. Pom file upgrade
parent pom
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="/POM/4.0.0" xmlns:xsi="http:///2001/XMLSchema-instance" xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0."> <modelVersion>1.0.0</modelVersion> <groupId>test</groupId> <artifactId>test</artifactId> <version>1.0.0</version> <packaging>pom</packaging> <name>test</name> <properties> <>${}</> <>UTF-8</> <>UTF-8</> <>21</> <>3.3.1</> <>6.3.1</> <>4.1.3</> <>2023.0.3</> <.>2.2.</.> <>2023.0.1.2</> <>2.2.</> <>8.0.33</> <>6.1.10</> <>3.5.7</> <>3.5.7</> <>3.0.3</> <>6.0.0</> <>3.1.0</> <>8.0.</> <org.>2.0.13</org.> <>2.12.0</> <>2.17.2</> <>3.7</> <>2.2</> <>1.10</> <>1.3.3</> <>1.9.3</> <>3.2.2</> <>4.5.3</> <>1.8.0</> <>18.0</> <>1.18.32</> <>2.0.51</> <>7.1.1</> <>1.4.10</> <>2.4.0</> <>2.0.4</> <>1.13.1</> <>3.17</> <>1.2.</> <>1.2.23</> <>4.5.11</> <></> </properties> <modules> <module>commons</module> <module>web</module> <module>dao</module> <module>dto</module> <module>model</module> <module>service</module> </modules> <dependencyManagement> <dependencies> <dependency> <groupId></groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>${}</version> <type>pom</type> </dependency> <dependency> <groupId></groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <version>${}</version> </dependency> <dependency> <groupId></groupId> <artifactId>spring-boot-starter-jdbc</artifactId> <version>${}</version> </dependency> <dependency> <groupId></groupId> <artifactId>spring-jdbc</artifactId> <version>${}</version> </dependency> <dependency> <groupId></groupId> <artifactId>spring-security-config</artifactId> <version>${}</version> </dependency> <dependency> <groupId></groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${}</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId></groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>${}</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId></groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>${}</version> </dependency> <dependency> <groupId></groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>${}</version> </dependency> <dependency> <groupId></groupId> <artifactId>rocketmq-spring-boot-starter</artifactId> <version>${}</version> </dependency> <dependency> <groupId></groupId> <artifactId>rocketmq-spring-boot</artifactId> <version>${}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${org.}</version> </dependency> <dependency> <groupId></groupId> <artifactId>commons-pool2</artifactId> <version>${}</version> </dependency> <dependency> <groupId></groupId> <artifactId>mapstruct</artifactId> <version>${}</version> </dependency> <dependency> <groupId></groupId> <artifactId>-api</artifactId> <version>${}</version> <scope>compile</scope> </dependency> <dependency> <groupId></groupId> <artifactId>-api</artifactId> <version>${}</version> </dependency> <dependency> <groupId></groupId> <artifactId>hibernate-validator</artifactId> <version>${}</version> </dependency> <!-- mybatis-plus begin --> <dependency> <groupId></groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>${}</version> </dependency> <dependency> <groupId></groupId> <artifactId>mybatis-plus</artifactId> <version>${}</version> </dependency> <dependency> <groupId></groupId> <artifactId>mybatis-plus-core</artifactId> <version>${}</version> </dependency> <dependency> <groupId></groupId> <artifactId>mybatis-plus-annotation</artifactId> <version>${}</version> </dependency> <dependency> <groupId></groupId> <artifactId>mybatis-spring</artifactId> <version>${}</version> </dependency> <!-- mybatis-plus end --> <!-- druid begin --> <dependency> <groupId></groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>${}</version> </dependency> <!-- druid end --> <!-- jdbc driver --> <dependency> <groupId></groupId> <artifactId>mysql-connector-j</artifactId> <version>${}</version> <scope>runtime</scope> </dependency> <dependency> <groupId></groupId> <artifactId>lombok</artifactId> <version>${}</version> </dependency> <!-- GENERAL UTILS begin --> <dependency> <groupId></groupId> <artifactId>commons-lang3</artifactId> <version>${}</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>${}</version> </dependency> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>${}</version> </dependency> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>${}</version> </dependency> <dependency> <groupId>commons-beanutils</groupId> <artifactId>commons-beanutils</artifactId> <version>${}</version> </dependency> <dependency> <groupId></groupId> <artifactId>httpclient</artifactId> <version>${}</version> </dependency> <dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</artifactId> <version>${}</version> </dependency> <!-- GENERAL UTILS end --> <!-- google java lib begin --> <dependency> <groupId></groupId> <artifactId>guava</artifactId> <version>${}</version> </dependency> <!-- google java lib end --> <!-- fastjson json begin --> <dependency> <groupId></groupId> <artifactId>fastjson</artifactId> <version>${}</version> </dependency> <dependency> <groupId></groupId> <artifactId>hutool-all</artifactId> <version>${}</version> </dependency> <dependency> <groupId></groupId> <artifactId>poi-ooxml</artifactId> <version>${}</version> </dependency> <dependency> <groupId></groupId> <artifactId>poi</artifactId> <version>${}</version> </dependency> <dependency> <groupId></groupId> <artifactId>poi-ooxml-schemas</artifactId> <version>${}</version> </dependency> <dependency> <groupId></groupId> <artifactId>bboss-elasticsearch-rest-jdbc</artifactId> <version>${}</version> <exclusions> <exclusion> <artifactId>slf4j-log4j12</artifactId> <groupId>org.slf4j</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId></groupId> <artifactId>xxl-job-core</artifactId> <version>${}</version> </dependency> <dependency> <groupId></groupId> <artifactId>micrometer-registry-prometheus</artifactId> <version>${}</version> </dependency> <!-- Swagger --> <!--Interface Documentation v3--> <dependency> <groupId></groupId> <artifactId>springdoc-openapi-webmvc-core</artifactId> <version>${}</version> </dependency> <!-- Introducedswaggerpage --> <dependency> <groupId></groupId> <artifactId>springdoc-openapi-ui</artifactId> <version>${}</version> </dependency> <dependency> <groupId>test</groupId> <artifactId>model</artifactId> <version>${}</version> </dependency> <dependency> <groupId>test</groupId> <artifactId>commons</artifactId> <version>${}</version> </dependency> <dependency> <groupId>test</groupId> <artifactId>dao</artifactId> <version>${}</version> </dependency> <dependency> <groupId>test</groupId> <artifactId>service</artifactId> <version>${}</version> </dependency> <dependency> <groupId>test</groupId> <artifactId>dto</artifactId> <version>${}</version> </dependency> <dependency> <groupId>test</groupId> <artifactId>web</artifactId> <version>${}</version> </dependency> </dependencies> </dependencyManagement> <build> <pluginManagement> <plugins> <plugin> <groupId></groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>${}</version> </plugin> <plugin> <groupId></groupId> <artifactId>dockerfile-maven-plugin</artifactId> <version>${}</version> <executions> <execution> <id>default</id> <goals> <goal>build</goal> <goal>push</goal> </goals> </execution> </executions> </plugin> </plugins> </pluginManagement> <plugins> <plugin> <groupId></groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.6.2</version> <configuration> <source>${}</source> <target>${}</target> <annotationProcessorPaths> <path> <groupId></groupId> <artifactId>mapstruct-processor</artifactId> <version>${}</version> </path> <path> <groupId></groupId> <artifactId>lombok</artifactId> <version>${}</version> </path> <path> <groupId></groupId> <artifactId>lombok-mapstruct-binding</artifactId> <version>0.2.0</version> </path> </annotationProcessorPaths> </configuration> </plugin> <plugin> <groupId></groupId> <artifactId>flyway-maven-plugin</artifactId> <version>6.0.6</version> <dependencies> <dependency> <groupId></groupId> <artifactId>mariadb-java-client</artifactId> <version>2.5.0</version> </dependency> </dependencies> </plugin> </plugins> </build> </project>
web pom
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="/POM/4.0.0" xmlns:xsi="http:///2001/XMLSchema-instance" xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0."> <parent> <artifactId>test</artifactId> <groupId>test</groupId> <version>1.0.0</version> </parent> <modelVersion>1.0.0</modelVersion> <artifactId>web</artifactId> <dependencies> <dependency> <groupId></groupId> <artifactId>spring-boot-starter-web</artifactId> <version>${}</version> </dependency> <dependency> <groupId></groupId> <artifactId>spring-boot-starter-aop</artifactId> <version>${}</version> </dependency> <dependency> <groupId></groupId> <artifactId>spring-boot-starter-actuator</artifactId> <version>${}</version> </dependency> <dependency> <groupId></groupId> <artifactId>spring-boot-starter-test</artifactId> <version>${}</version> <scope>test</scope> </dependency> <dependency> <groupId></groupId> <artifactId>spring-cloud-starter-loadbalancer</artifactId> <version>${}</version> </dependency> <dependency> <groupId></groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> <version>${}</version> </dependency> <dependency> <groupId></groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> <version>${}</version> </dependency> <dependency> <groupId></groupId> <artifactId>spring-cloud-starter-oauth2</artifactId> <version>${.}</version> </dependency> <dependency> <groupId></groupId> <artifactId>spring-security-web</artifactId> <version>${}</version> </dependency> <dependency> <groupId></groupId> <artifactId>jackson-datatype-jsr310</artifactId> <version>${}</version> </dependency> <dependency> <groupId></groupId> <artifactId>micrometer-registry-prometheus</artifactId> </dependency> <dependency> <groupId></groupId> <artifactId>xxl-job-core</artifactId> </dependency> <dependency> <groupId>test</groupId> <artifactId>dto</artifactId> </dependency> <dependency> <groupId>test</groupId> <artifactId>commons</artifactId> </dependency> <dependency> <groupId>test</groupId> <artifactId>service</artifactId> </dependency> </dependencies> <build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <!-- Whether to replace attributes in the resource --> <filtering>false</filtering> </resource> <resource> <directory>src/main/resources</directory> </resource> </resources> <plugins> <plugin> <groupId></groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId></groupId> <artifactId>dockerfile-maven-plugin</artifactId> <version>1.4.10</version> <configuration> <repository> ${}/${}/${} </repository> <tag>latest</tag> <useMavenSettingsForAuth>true</useMavenSettingsForAuth> <buildArgs> <JAR_FILE>target/${}.jar</JAR_FILE> <JAR_NAME>${}</JAR_NAME> </buildArgs> </configuration> </plugin> </plugins> </build> </project>
service pom
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="/POM/4.0.0" xmlns:xsi="http:///2001/XMLSchema-instance" xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0."> <parent> <artifactId>test</artifactId> <groupId>test</groupId> <version>1.0.0</version> </parent> <modelVersion>1.0.0</modelVersion> <artifactId>service</artifactId> <dependencies> <dependency> <groupId>test</groupId> <artifactId>model</artifactId> </dependency> <dependency> <groupId>test</groupId> <artifactId>commons</artifactId> </dependency> <dependency> <groupId>test</groupId> <artifactId>dao</artifactId> </dependency> <dependency> <groupId>test</groupId> <artifactId>dto</artifactId> </dependency> </dependencies> </project>
model pom
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="/POM/4.0.0" xmlns:xsi="http:///2001/XMLSchema-instance" xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0."> <parent> <artifactId>test</artifactId> <groupId>test</groupId> <version>1.0.0</version> </parent> <modelVersion>1.0.0</modelVersion> <artifactId>model</artifactId> <dependencies> <dependency> <groupId></groupId> <artifactId>mybatis-plus-annotation</artifactId> </dependency> </dependencies> </project>
dto pom
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="/POM/4.0.0" xmlns:xsi="http:///2001/XMLSchema-instance" xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0."> <parent> <artifactId>test</artifactId> <groupId>test</groupId> <version>1.0.0</version> </parent> <modelVersion>1.0.0</modelVersion> <artifactId>dto</artifactId> <dependencies> <dependency> <groupId>test</groupId> <artifactId>model</artifactId> </dependency> <dependency> <groupId>test</groupId> <artifactId>commons</artifactId> </dependency> <dependency> <artifactId>jackson-datatype-jsr310</artifactId> <groupId></groupId> <version>${}</version> </dependency> <dependency> <groupId></groupId> <artifactId>mapstruct</artifactId> </dependency> </dependencies> </project>
dao pom
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="/POM/4.0.0" xmlns:xsi="http:///2001/XMLSchema-instance" xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0."> <parent> <artifactId>test</artifactId> <groupId>test</groupId> <version>1.0.0</version> </parent> <modelVersion>1.0.0</modelVersion> <artifactId>dao</artifactId> <dependencies> <dependency> <groupId></groupId> <artifactId>mybatis-plus</artifactId> </dependency> <dependency> <groupId>test</groupId> <artifactId>model</artifactId> </dependency> <dependency> <groupId>test</groupId> <artifactId>dto</artifactId> </dependency> </dependencies> <build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <!-- Whether to replace attributes in the resource --> <filtering>false</filtering> </resource> <resource> <directory>src/main/resources</directory> <!-- <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>true</filtering> --> </resource> </resources> </build> </project>
commons pom
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="/POM/4.0.0" xmlns:xsi="http:///2001/XMLSchema-instance" xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0."> <parent> <artifactId>test</artifactId> <groupId>test</groupId> <version>1.0.0</version> </parent> <modelVersion>1.0.0</modelVersion> <artifactId>commons</artifactId> <dependencies> <dependency> <groupId></groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.0.6</version> </dependency> </dependencies> </project>
2. Organize the main compatibility issues of pom
Version needs to be upgraded to 1.8.30 or above
<dependency> <groupId></groupId> <artifactId>lombok</artifactId> <version>1.18.30</version> </dependency>
Compatibility issues with lombok
<build> <plugins> <plugin> <groupId></groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.6.2</version> <configuration> <source>21</source> <target>21</target> <annotationProcessorPaths> <path> <groupId></groupId> <artifactId>mapstruct-processor</artifactId> <version>1.2.</version> </path> <path> <groupId></groupId> <artifactId>lombok</artifactId> <version>1.18.32</version> </path> <path> <groupId></groupId> <artifactId>lombok-mapstruct-binding</artifactId> <version>0.2.0</version> </path> </annotationProcessorPaths> </configuration> </plugin> </plugins> </build>
Dependency replacement
Original dependency
<dependency> <groupId></groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>0.2.</version> </dependency> <dependency> <groupId></groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>0.2.</version> </dependency>
New dependencies
<dependency> <groupId></groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2023.0.1.2</version> </dependency> <dependency> <groupId></groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>2023.0.1.2</version> </dependency>
Need to add
<dependency> <groupId></groupId> <artifactId>mybatis-spring</artifactId> <version>3.0.3</version> </dependency>
Modify artifactId
<dependency> <groupId></groupId> <artifactId>mysql-connector-j</artifactId> <version>8.0.33</version> <scope>runtime</scope> </dependency>
<dependency> <artifactId>jackson-datatype-jsr310</artifactId> <groupId></groupId> <version>2.17.2</version> </dependency>
7. Automatic assembly is required for conflict between oauth2 and nacos
<dependency> <groupId></groupId> <artifactId>spring-cloud-starter-oauth2</artifactId> <version>2.2.</version> <exclusions> <exclusion> <artifactId>spring-security-oauth2-autoconfigure</artifactId> <groupId></groupId> </exclusion> </exclusions> </dependency>
3、
Redis level one more layer of data
spring: data: redis: host: 9.218.74.102 port: 6379 database: 0 password: ${redisPassword} timeout: 800 lettuce: pool: max-active: 8 max-idle: 8 min-idle: 0 max-wait: -1
MySQL database url&username&password level improvement
spring: datasource: type: driverClassName: url: username: password:
4. Upgrade and modify configuration
XxlJobConfig
AppName field name update
XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor(); //(appName); (appName);
DataSourceConfig
Paging and optimistic lock plug-in configuration
@Configuration @EnableTransactionManagement @MapperScan("") public class DataSourceConfig { /** *Page and Optimistic Lock Plugin * * @return the page and optimistic locker interceptor */ @Bean public MybatisPlusInterceptor mybatisPlusInterceptor(){ MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor(); ( new PaginationInnerInterceptor()); ( new OptimisticLockerInnerInterceptor()); return mybatisPlusInterceptor; } }
SecurityConfig
The original configuration ResourceServerConfigurerAdapter is outdated
@EnableResourceServer @EnableOAuth2Client @EnableGlobalMethodSecurity(prePostEnabled = true) @Configuration @Slf4j public class SecurityConfig extends ResourceServerConfigurerAdapter { @Override public void configure(HttpSecurity http) throws Exception { // @formatter:off () .antMatchers( "/url", "/url" ).permitAll() .anyRequest().authenticated(); // @formatter:on } }
New configuration
@EnableWebSecurity @Configuration @Slf4j @EnableConfigurationProperties({}) public class SecurityConfig { @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { // @formatter:off ((authz) -> authz .requestMatchers( "url", "url") .authenticated()).httpBasic(withDefaults()); return (); // @formatter:on } }
5. Code modification
Replace javax with jakarta
import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ;
mybatiesplus database entity annotation content replacement
@TableId(value = "id", type = IdType.ID_WORKER) @TableId(value = "id", type = IdType.ASSIGN_ID) @TableField(value = "start_time", strategy = ) @TableField(value = "start_time", updateStrategy = )
XXLJob
Original code
@JobHandler(value = "Job") @Component @Slf4j public class Job extends IJobHandler { @Override public ReturnT<String> execute(String param) throws Exception { shardingVo = (); int index = (); int total = (); ("log", index); (param); return ; } }
New code
@Component @Slf4j public class Job extends IJobHandler { @Override @XxlJob("Job") public void execute() throws Exception { int index = (); int total = (); ("log", index); String param = (); (param); } }
Summarize
This is the end of this article about java8 upgrading java21. For more related java8 upgrading java21, please search for my previous articles or continue browsing the related articles below. I hope everyone will support me in the future!