参考:
https://blog.csdn.net/LabDNirvana/article/details/104497709
https://www.jb51.net/article/268361.htm
要升级springboot到3.0,首先需要将jdk升级到至少17.
但在整合mybatis的时候报错,Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplate‘ are required
通过debug,发现NestedIOException 在 Spring6的版本中删除了,因为springboot3.0在Nov 28, 2022发布的,mybatis-spring-boot-starter还没有发布与之匹配的正式版本,目前只能使用SNAPSHOT版本,但是需要在pom.xml需要配置一个新的远程仓库,并且需要在maven的settings.xml里面使用感叹号将新加的仓库从匹配中排除.
websocket的包也发生了变化,都在jakarta下了
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import jakarta.websocket.*;
import jakarta.websocket.server.PathParam;
import jakarta.websocket.server.ServerEndpoint;
import org.springframework.stereotype.Component;
@Component
@ServerEndpoint(value = "/aiws/{userName}")
public class WebSocketServer {
static Map<Session, String> map = new HashMap<Session, String>(); //存储系统的用户信息
/**
* @param session
*/
@OnOpen
public void OnOpen(@PathParam("userName") String userName, Session session) {
System.out.println(userName);
map.put(session, userName);
System.out.println("OnOpen()方法被执行...");
System.out.println("websocket连接建立成功...");
}
/**
* 连接关闭的方法
*/
@OnClose
public void OnClose(Session session) {
if (map.containsKey(session)) {
map.remove(session);
}
System.out.println("OnClose()方法被执行...");
System.out.println("websocket连接已经关闭...");
}
/**
* 接收消息的方法
*
* @param msg
* @param session
* @throws InterruptedException
*/
@OnMessage
public void OnMessage(String msg, Session session) throws InterruptedException {
System.out.println("已从客户端接收消息:" + msg);
System.out.println("向客户端发送数据完毕...");
}
/**
* 出错的方法,注意参数不能错
*
* @param session
* @param error
*/
@OnError
public void OnError(Session session, Throwable error) {
if (map.containsKey(session)) {
map.remove(session);
}
System.out.println("OnError()方法dewd被执行...");
System.out.println("websocket出错...");
}
/**
* 推送数据的方法
*
* @param session map里存的登录信息
* @param message 推送数据
*/
public void sendMessage(Session session, String message) {
try {
session.getBasicRemote().sendText(message);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
1.pom.xml添加新的远程仓库
<repositories>
<repository>
<id>ossrh</id>
<name>OSS Snapshot repository</name>
<url>https://oss.sonatype.org/content/repositories/snapshots/</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
2.setting.xml排除新加的远程仓库
<?xml version="1.0"?>
<settings>
<mirrors>
<mirror>
<id>nexus</id>
<name>local private nexus</name>
<url>http://xx.xx.xx.xx:8081/nexus/content/groups/public</url>
<mirrorOf>*,!ossrh</mirrorOf>
</mirror>
</mirrors>
</settings>
完整的pom.xml如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.0.0</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.test</groupId>
<artifactId>test</artifactId>
<version>1.0.1-SNAPSHOT</version>
<name>aidemo</name>
<description>Spring Boot3.0 Test Project</description>
<properties>
<java.version>17</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.0.0</version>
<exclusions>
<exclusion>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>4.2.2</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>4.2.2</version>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</exclusion>
<exclusion>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
</exclusion>
<exclusion>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>3.0.2-SNAPSHOT</version>
</dependency>
</dependencies>
<repositories>
<repository>
<id>ossrh</id>
<name>OSS Snapshot repository</name>
<url>https://oss.sonatype.org/content/repositories/snapshots/</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.7</version>
<configuration>
<verbose>true</verbose>
<overwrite>false</overwrite>
<configurationFile>${project.basedir}/genConfig.xml</configurationFile>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>4.1.5</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>