diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
new file mode 100644
index 00000000..ff7855e9
--- /dev/null
+++ b/.github/workflows/build.yml
@@ -0,0 +1,32 @@
+name: Build
+
+on:
+ push:
+ branches: [ "main" ]
+ pull_request:
+ branches: [ "main" ]
+
+jobs:
+ build:
+ name: Build (JDK ${{ matrix.java }})
+ runs-on: ubuntu-latest
+
+ strategy:
+ fail-fast: false
+ matrix:
+ # 21 是项目的编译目标, 25 用于提前发现新 JDK 上的问题
+ java: [ '21', '25' ]
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v7
+
+ - name: Set up JDK ${{ matrix.java }}
+ uses: actions/setup-java@v6
+ with:
+ distribution: temurin
+ java-version: ${{ matrix.java }}
+ cache: maven
+
+ - name: Build
+ run: mvn -B --no-transfer-progress clean install
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
index 98313f13..e92a4f85 100644
--- a/.github/workflows/codeql-analysis.yml
+++ b/.github/workflows/codeql-analysis.yml
@@ -19,6 +19,7 @@ on:
branches: [ "main" ]
schedule:
- cron: '24 7 * * 0'
+ workflow_dispatch:
jobs:
analyze:
@@ -38,11 +39,19 @@ jobs:
steps:
- name: Checkout repository
- uses: actions/checkout@v3
+ uses: actions/checkout@v7
+
+ # Spring Boot 4 需要 JDK 17+, 显式固定版本, 不依赖 runner 镜像的默认 JDK
+ - name: Set up JDK
+ uses: actions/setup-java@v6
+ with:
+ distribution: temurin
+ java-version: '21'
+ cache: maven
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
- uses: github/codeql-action/init@v2
+ uses: github/codeql-action/init@v4
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
@@ -56,7 +65,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
- uses: github/codeql-action/autobuild@v2
+ uses: github/codeql-action/autobuild@v4
# ℹ️ Command-line programs to run using the OS shell.
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
@@ -69,4 +78,4 @@ jobs:
# ./location_of_script_within_repo/buildscript.sh
- name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@v2
+ uses: github/codeql-action/analyze@v4
diff --git a/.travis.yml b/.travis.yml
index 34d145f8..98afce14 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,4 +1,4 @@
language: java
jdk:
- - oraclejdk11
-dist: trusty
\ No newline at end of file
+ - openjdk21
+dist: jammy
diff --git a/Readme.md b/Readme.md
index 6c81e74e..0fe2ca28 100644
--- a/Readme.md
+++ b/Readme.md
@@ -1,4 +1,4 @@
-[](https://travis-ci.org/houko/SpringBootUnity)
+[](https://github.com/houko/SpringBootUnity/actions/workflows/build.yml)
[](#backers) [](#sponsors) [](https://github.com/houko/SpringBootUnity/issues)
[](https://raw.githubusercontent.com/houko/SpringBootUnity/main/LICENSE)
[]()
@@ -8,8 +8,8 @@
### 环境
- `maven` latest
-- `jdk11`
-- `spring boot 2.x release`
+- `jdk21`
+- `spring boot 4.x release`
- 个人推荐`idea`来代替eclipse
- git: 版本管理
- nginx: 反向代理服务器
@@ -71,6 +71,11 @@ http://localhost:808/doc.html bootstrap-ui
- 2020-10-09 升级mysql connector到8
- 2020-10-09 升级spring boot到2.3.0
- 2020-10-09 修复了升级后API的破坏性变动,修复了一些了编辑器警告
+- 2026-09-09 升级spring boot到4.1.1,jdk升级到21,全部依赖更新到最新版本
+- 2026-09-09 `javax.*` 迁移到 `jakarta.*`(persistence/servlet/mail/websocket)
+- 2026-09-09 api文档从已停止维护的springfox迁移到springdoc-openapi,swagger注解升级到OpenAPI 3
+- 2026-09-09 security模块改用SecurityFilterChain组件式配置,替换已移除的WebSecurityConfigurerAdapter
+- 2026-09-09 fastjson迁移到fastjson2,jackson升级到3.x,poi升级到5.x,dom4j迁移到org.dom4j
diff --git a/async/src/main/java/info/xiaomo/anysc/AsyncMain.java b/async/src/main/java/info/xiaomo/anysc/AsyncMain.java
index 79e1fce0..1e550e2f 100644
--- a/async/src/main/java/info/xiaomo/anysc/AsyncMain.java
+++ b/async/src/main/java/info/xiaomo/anysc/AsyncMain.java
@@ -3,9 +3,9 @@
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.autoconfigure.domain.EntityScan;
-import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
-import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
+import org.springframework.boot.persistence.autoconfigure.EntityScan;
+import org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration;
+import org.springframework.boot.hibernate.autoconfigure.HibernateJpaAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
diff --git a/core/pom.xml b/core/pom.xml
index 8e3af9eb..fd441758 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -32,12 +32,8 @@
spring-boot-starter-test
- junit
- junit
-
-
- mysql
- mysql-connector-java
+ com.mysql
+ mysql-connector-j
org.slf4j
@@ -48,27 +44,19 @@
commons-io
- com.alibaba
- fastjson
+ com.alibaba.fastjson2
+ fastjson2
org.apache.commons
commons-lang3
-
- javax.mail
- mail
-
-
- commons-fileupload
- commons-fileupload
-
org.projectlombok
lombok
- dom4j
+ org.dom4j
dom4j
diff --git a/core/src/main/java/info/xiaomo/core/base/BaseModel.java b/core/src/main/java/info/xiaomo/core/base/BaseModel.java
index 37d18bbe..02693895 100644
--- a/core/src/main/java/info/xiaomo/core/base/BaseModel.java
+++ b/core/src/main/java/info/xiaomo/core/base/BaseModel.java
@@ -2,7 +2,7 @@
import lombok.Data;
-import javax.persistence.*;
+import jakarta.persistence.*;
import java.io.Serializable;
import java.util.Date;
diff --git a/core/src/main/java/info/xiaomo/core/filter/CorsFilter.java b/core/src/main/java/info/xiaomo/core/filter/CorsFilter.java
index 75ccacf3..c70b4cd6 100644
--- a/core/src/main/java/info/xiaomo/core/filter/CorsFilter.java
+++ b/core/src/main/java/info/xiaomo/core/filter/CorsFilter.java
@@ -2,8 +2,8 @@
import org.springframework.stereotype.Component;
-import javax.servlet.*;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.*;
+import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
diff --git a/core/src/main/java/info/xiaomo/core/filter/CustomDateSerializerFilter.java b/core/src/main/java/info/xiaomo/core/filter/CustomDateSerializerFilter.java
index e46cfb8f..d1e733ba 100644
--- a/core/src/main/java/info/xiaomo/core/filter/CustomDateSerializerFilter.java
+++ b/core/src/main/java/info/xiaomo/core/filter/CustomDateSerializerFilter.java
@@ -1,22 +1,21 @@
package info.xiaomo.core.filter;
-import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.databind.JsonSerializer;
-import com.fasterxml.jackson.databind.SerializerProvider;
import info.xiaomo.core.untils.TimeUtil;
+import tools.jackson.core.JsonGenerator;
+import tools.jackson.databind.SerializationContext;
+import tools.jackson.databind.ValueSerializer;
-import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* @author : xiaomo
*/
-public class CustomDateSerializerFilter extends JsonSerializer {
+public class CustomDateSerializerFilter extends ValueSerializer {
@Override
- public void serialize(Date value, JsonGenerator jsonGenerator, SerializerProvider provider) throws IOException {
+ public void serialize(Date value, JsonGenerator jsonGenerator, SerializationContext context) {
SimpleDateFormat sdf = new SimpleDateFormat(TimeUtil.DEFAULT_FORMAT2);
jsonGenerator.writeString(sdf.format(value));
}
-}
\ No newline at end of file
+}
diff --git a/core/src/main/java/info/xiaomo/core/untils/AuthUtil.java b/core/src/main/java/info/xiaomo/core/untils/AuthUtil.java
index 670f0d70..776f9a1a 100644
--- a/core/src/main/java/info/xiaomo/core/untils/AuthUtil.java
+++ b/core/src/main/java/info/xiaomo/core/untils/AuthUtil.java
@@ -1,6 +1,6 @@
package info.xiaomo.core.untils;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpSession;
/**
* 把今天最好的表现当作明天最新的起点..~
diff --git a/core/src/main/java/info/xiaomo/core/untils/ExcelUtil.java b/core/src/main/java/info/xiaomo/core/untils/ExcelUtil.java
index 9a1738e3..f2c580c0 100644
--- a/core/src/main/java/info/xiaomo/core/untils/ExcelUtil.java
+++ b/core/src/main/java/info/xiaomo/core/untils/ExcelUtil.java
@@ -2,6 +2,7 @@
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
+import org.apache.poi.ss.usermodel.DateUtil;
import java.io.*;
import java.text.DecimalFormat;
@@ -83,11 +84,11 @@ private static String[][] getData(File file, int ignoreRows)
cell = row.getCell(columnIndex);
if (cell != null) {
switch (cell.getCellType()) {
- case HSSFCell.CELL_TYPE_STRING:
+ case STRING:
value = cell.getStringCellValue();
break;
- case HSSFCell.CELL_TYPE_NUMERIC:
- if (HSSFDateUtil.isCellDateFormatted(cell)) {
+ case NUMERIC:
+ if (DateUtil.isCellDateFormatted(cell)) {
Date date = cell.getDateCellValue();
if (date != null) {
value = new SimpleDateFormat("yyyy-MM-dd")
@@ -100,7 +101,7 @@ private static String[][] getData(File file, int ignoreRows)
.getNumericCellValue());
}
break;
- case HSSFCell.CELL_TYPE_FORMULA:
+ case FORMULA:
// 导入时如果为公式生成的数据则无值
if (!"".equals(cell.getStringCellValue())) {
value = cell.getStringCellValue();
@@ -108,12 +109,12 @@ private static String[][] getData(File file, int ignoreRows)
value = cell.getNumericCellValue() + "";
}
break;
- case HSSFCell.CELL_TYPE_BLANK:
+ case BLANK:
break;
- case HSSFCell.CELL_TYPE_ERROR:
+ case ERROR:
value = "";
break;
- case HSSFCell.CELL_TYPE_BOOLEAN:
+ case BOOLEAN:
value = (cell.getBooleanCellValue() ? "Y"
: "N");
break;
diff --git a/core/src/main/java/info/xiaomo/core/untils/HttpUtil.java b/core/src/main/java/info/xiaomo/core/untils/HttpUtil.java
index 8257d22a..17cc0b8a 100644
--- a/core/src/main/java/info/xiaomo/core/untils/HttpUtil.java
+++ b/core/src/main/java/info/xiaomo/core/untils/HttpUtil.java
@@ -4,9 +4,9 @@
import org.apache.commons.lang3.StringUtils;
import javax.net.ssl.*;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.Cookie;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
diff --git a/core/src/main/java/info/xiaomo/core/untils/MailUtil.java b/core/src/main/java/info/xiaomo/core/untils/MailUtil.java
index d4c36da7..1d0712d9 100644
--- a/core/src/main/java/info/xiaomo/core/untils/MailUtil.java
+++ b/core/src/main/java/info/xiaomo/core/untils/MailUtil.java
@@ -1,8 +1,8 @@
package info.xiaomo.core.untils;
-import javax.mail.*;
-import javax.mail.internet.InternetAddress;
-import javax.mail.internet.MimeMessage;
+import jakarta.mail.*;
+import jakarta.mail.internet.InternetAddress;
+import jakarta.mail.internet.MimeMessage;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Date;
diff --git a/core/src/main/java/info/xiaomo/core/untils/StringUtil.java b/core/src/main/java/info/xiaomo/core/untils/StringUtil.java
index 5cf3fda8..b4a65ee0 100644
--- a/core/src/main/java/info/xiaomo/core/untils/StringUtil.java
+++ b/core/src/main/java/info/xiaomo/core/untils/StringUtil.java
@@ -2,7 +2,7 @@
import org.apache.commons.lang3.StringUtils;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.io.StringReader;
import java.io.UnsupportedEncodingException;
diff --git a/core/src/main/java/info/xiaomo/core/untils/TokenUtil.java b/core/src/main/java/info/xiaomo/core/untils/TokenUtil.java
index d4707393..59d4e317 100644
--- a/core/src/main/java/info/xiaomo/core/untils/TokenUtil.java
+++ b/core/src/main/java/info/xiaomo/core/untils/TokenUtil.java
@@ -1,6 +1,6 @@
package info.xiaomo.core.untils;
-import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSONObject;
import info.xiaomo.core.constant.SymbolConst;
import java.util.regex.Matcher;
diff --git a/core/src/main/java/info/xiaomo/core/untils/XmlUtil.java b/core/src/main/java/info/xiaomo/core/untils/XmlUtil.java
index 48fe446f..a62f4c4a 100644
--- a/core/src/main/java/info/xiaomo/core/untils/XmlUtil.java
+++ b/core/src/main/java/info/xiaomo/core/untils/XmlUtil.java
@@ -1,6 +1,6 @@
package info.xiaomo.core.untils;
-import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson2.JSON;
import org.dom4j.*;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
diff --git a/crawler/src/main/java/info/xiaomo/crawler/model/ShikigamiModel.java b/crawler/src/main/java/info/xiaomo/crawler/model/ShikigamiModel.java
index b208fea5..dac85b6c 100644
--- a/crawler/src/main/java/info/xiaomo/crawler/model/ShikigamiModel.java
+++ b/crawler/src/main/java/info/xiaomo/crawler/model/ShikigamiModel.java
@@ -3,8 +3,8 @@
import info.xiaomo.core.base.BaseModel;
import lombok.*;
-import javax.persistence.Entity;
-import javax.persistence.Table;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Table;
/**
* @author : xiaomo (https://xiaomo.info) (https://github.com/houko)
diff --git a/crawler/src/main/java/info/xiaomo/crawler/service/impl/ShikigamaServiceImpl.java b/crawler/src/main/java/info/xiaomo/crawler/service/impl/ShikigamaServiceImpl.java
index 0a5bfe42..22e0393f 100644
--- a/crawler/src/main/java/info/xiaomo/crawler/service/impl/ShikigamaServiceImpl.java
+++ b/crawler/src/main/java/info/xiaomo/crawler/service/impl/ShikigamaServiceImpl.java
@@ -1,6 +1,6 @@
package info.xiaomo.crawler.service.impl;
-import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson2.JSON;
import info.xiaomo.crawler.dao.ShikigamaDao;
import info.xiaomo.crawler.model.ShikigamiModel;
import info.xiaomo.crawler.service.ShikigamaService;
diff --git a/crawler/src/main/resources/config/application.properties b/crawler/src/main/resources/config/application.properties
index 8d5bd3e7..aaf2db14 100644
--- a/crawler/src/main/resources/config/application.properties
+++ b/crawler/src/main/resources/config/application.properties
@@ -13,6 +13,6 @@ spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#spring.jackson.time-zone=GMT+8
#jpa
-spring.jpa.database-platform=org.hibernate.dialect.MySQL5Dialect
+spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
diff --git a/freemarker/src/main/java/info/xiaomo/freemarker/FreemarkerMain.java b/freemarker/src/main/java/info/xiaomo/freemarker/FreemarkerMain.java
index d1e9d83c..f1bba291 100644
--- a/freemarker/src/main/java/info/xiaomo/freemarker/FreemarkerMain.java
+++ b/freemarker/src/main/java/info/xiaomo/freemarker/FreemarkerMain.java
@@ -2,9 +2,9 @@
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.autoconfigure.domain.EntityScan;
-import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
-import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
+import org.springframework.boot.persistence.autoconfigure.EntityScan;
+import org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration;
+import org.springframework.boot.hibernate.autoconfigure.HibernateJpaAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
diff --git a/javase/pom.xml b/javase/pom.xml
index e3a3c480..bb661e0a 100644
--- a/javase/pom.xml
+++ b/javase/pom.xml
@@ -27,17 +27,8 @@
true
- io.springfox
- springfox-swagger2
-
-
- io.springfox
- springfox-swagger-ui
-
-
- com.github.xiaoymin
- swagger-bootstrap-ui
- 1.5
+ org.springdoc
+ springdoc-openapi-starter-webmvc-ui
diff --git a/javase/src/main/java/info/xiaomo/javase/QuestionMain.java b/javase/src/main/java/info/xiaomo/javase/QuestionMain.java
index 7cda0422..215f87a1 100644
--- a/javase/src/main/java/info/xiaomo/javase/QuestionMain.java
+++ b/javase/src/main/java/info/xiaomo/javase/QuestionMain.java
@@ -1,9 +1,14 @@
package info.xiaomo.javase;
-import io.swagger.annotations.ApiOperation;
+import io.swagger.v3.oas.models.OpenAPI;
+import io.swagger.v3.oas.models.info.Contact;
+import io.swagger.v3.oas.models.info.Info;
+import org.springdoc.core.models.GroupedOpenApi;
+import io.swagger.v3.oas.annotations.Hidden;
+import io.swagger.v3.oas.annotations.Operation;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.autoconfigure.domain.EntityScan;
+import org.springframework.boot.persistence.autoconfigure.EntityScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@@ -13,14 +18,6 @@
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-import springfox.documentation.annotations.ApiIgnore;
-import springfox.documentation.builders.ApiInfoBuilder;
-import springfox.documentation.builders.PathSelectors;
-import springfox.documentation.builders.RequestHandlerSelectors;
-import springfox.documentation.service.ApiInfo;
-import springfox.documentation.spi.DocumentationType;
-import springfox.documentation.spring.web.plugins.Docket;
-import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
* 把今天最好的表现当作明天最新的起点..~
@@ -41,7 +38,6 @@
@ComponentScan("info.xiaomo")
@EntityScan("info.xiaomo.*.model")
@EnableJpaRepositories("info.xiaomo.*.dao")
-@EnableSwagger2
@RestController
public class QuestionMain implements WebMvcConfigurer {
@@ -55,31 +51,29 @@ public static void main(String[] args) {
* @return 接口
*/
@RequestMapping(value = "/", method = RequestMethod.GET)
- @ApiIgnore()
- @ApiOperation(value = "重定向到api首页")
+ @Hidden
+ @Operation(summary = "重定向到api首页")
public ModelAndView api() {
return new ModelAndView("redirect:/swagger-ui.html");
}
@Bean
- public Docket createRestApi() {
- return new Docket(DocumentationType.SWAGGER_2)
- .apiInfo(apiInfo())
- .select()
- .apis(RequestHandlerSelectors.basePackage("info.xiaomo.javase"))
- .paths(PathSelectors.any())
+ public GroupedOpenApi javaseApi() {
+ return GroupedOpenApi.builder()
+ .group("javase")
+ .packagesToScan("info.xiaomo.javase")
.build();
}
- private ApiInfo apiInfo() {
- return new ApiInfoBuilder()
- .title("Spring Boot中使用Swagger2构建RESTful APIs")
- .description("java se题库api")
- .termsOfServiceUrl("https://question.xiaomo.info/")
- .contact("小莫")
- .version("1.0")
- .build();
+ @Bean
+ public OpenAPI openApi() {
+ return new OpenAPI()
+ .info(new Info()
+ .title("Spring Boot中使用OpenAPI构建RESTful APIs")
+ .description("java se题库api")
+ .termsOfService("https://question.xiaomo.info/")
+ .contact(new Contact().name("小莫"))
+ .version("1.0"));
}
-
}
diff --git a/javase/src/main/java/info/xiaomo/javase/controller/QuestionController.java b/javase/src/main/java/info/xiaomo/javase/controller/QuestionController.java
index d76c4876..2dddf244 100644
--- a/javase/src/main/java/info/xiaomo/javase/controller/QuestionController.java
+++ b/javase/src/main/java/info/xiaomo/javase/controller/QuestionController.java
@@ -1,13 +1,14 @@
package info.xiaomo.javase.controller;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Parameters;
+import io.swagger.v3.oas.annotations.enums.ParameterIn;
+import io.swagger.v3.oas.annotations.tags.Tag;
import info.xiaomo.core.base.Result;
import info.xiaomo.core.constant.CodeConst;
import info.xiaomo.javase.model.QuestionModel;
import info.xiaomo.javase.service.QuestionService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
@@ -27,7 +28,7 @@
*/
@RestController
@RequestMapping("/question")
-@Api(value = "question", description = "question")
+@Tag(name = "question", description = "question")
public class QuestionController {
@@ -44,10 +45,10 @@ public QuestionController(QuestionService service) {
* @param id id
* @return result
*/
- @ApiOperation(value = "查找问题", notes = "查找问题", httpMethod = "GET")
+ @Operation(summary = "查找问题", description = "查找问题")
@RequestMapping(value = "findById/{id}", method = RequestMethod.GET)
- @ApiImplicitParams({
- @ApiImplicitParam(name = "id", value = "唯一id", required = true, dataType = "Long", paramType = "path"),
+ @Parameters({
+ @Parameter(name = "id", description = "唯一id", required = true, in = ParameterIn.PATH),
})
public Result findUserById(@PathVariable("id") Long id) {
QuestionModel questionModel = service.findById(id);
@@ -62,7 +63,7 @@ public Result findUserById(@PathVariable("id") Long id) {
*
* @return result
*/
- @ApiOperation(value = "添加", notes = "添加", httpMethod = "POST")
+ @Operation(summary = "添加", description = "添加")
@RequestMapping(value = "findById/{id}", method = RequestMethod.POST)
public Result addQuestion(@RequestBody QuestionModel questionModel) {
boolean add = service.add(questionModel);
diff --git a/javase/src/main/java/info/xiaomo/javase/model/QuestionModel.java b/javase/src/main/java/info/xiaomo/javase/model/QuestionModel.java
index 39954ae5..512d99c4 100644
--- a/javase/src/main/java/info/xiaomo/javase/model/QuestionModel.java
+++ b/javase/src/main/java/info/xiaomo/javase/model/QuestionModel.java
@@ -4,8 +4,8 @@
import lombok.Data;
import lombok.EqualsAndHashCode;
-import javax.persistence.Entity;
-import javax.persistence.Table;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Table;
import java.io.Serializable;
/**
diff --git a/javase/src/main/resources/config/application.properties b/javase/src/main/resources/config/application.properties
index 34b74282..4c4c40cc 100644
--- a/javase/src/main/resources/config/application.properties
+++ b/javase/src/main/resources/config/application.properties
@@ -11,16 +11,16 @@ spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
#spring.jackson.time-zone=GMT+8
#jpa
-spring.jpa.database-platform=org.hibernate.dialect.MySQL5Dialect
+spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
# redis
# Redis\u6570\u636E\u5E93\u7D22\u5F15\uFF08\u9ED8\u8BA4\u4E3A0\uFF09
-spring.redis.database=0
-spring.redis.host=ip
-spring.redis.port=6379
-spring.redis.password=
+spring.data.redis.database=0
+spring.data.redis.host=ip
+spring.data.redis.port=6379
+spring.data.redis.password=
# \u8FDE\u63A5\u6C60\u6700\u5927\u8FDE\u63A5\u6570\uFF08\u4F7F\u7528\u8D1F\u503C\u8868\u793A\u6CA1\u6709\u9650\u5236\uFF09
#spring.redis.pool.max-active=8
## \u8FDE\u63A5\u6C60\u6700\u5927\u963B\u585E\u7B49\u5F85\u65F6\u95F4\uFF08\u4F7F\u7528\u8D1F\u503C\u8868\u793A\u6CA1\u6709\u9650\u5236\uFF09
@@ -30,4 +30,4 @@ spring.redis.password=
## \u8FDE\u63A5\u6C60\u4E2D\u7684\u6700\u5C0F\u7A7A\u95F2\u8FDE\u63A5
#spring.redis.pool.min-idle=0
# \u8FDE\u63A5\u8D85\u65F6\u65F6\u95F4\uFF08\u6BEB\u79D2\uFF09
-spring.redis.timeout=0
+spring.data.redis.timeout=0
diff --git a/mongodb/pom.xml b/mongodb/pom.xml
index f3ade783..f3a6d998 100644
--- a/mongodb/pom.xml
+++ b/mongodb/pom.xml
@@ -21,12 +21,8 @@
spring-boot-starter-data-mongodb
- io.springfox
- springfox-swagger-ui
-
-
- io.springfox
- springfox-swagger2
+ org.springdoc
+ springdoc-openapi-starter-webmvc-ui
diff --git a/mongodb/src/main/java/info/xiaomo/mongodb/MongodbMain.java b/mongodb/src/main/java/info/xiaomo/mongodb/MongodbMain.java
index 0f6c1c2e..641f5eb7 100644
--- a/mongodb/src/main/java/info/xiaomo/mongodb/MongodbMain.java
+++ b/mongodb/src/main/java/info/xiaomo/mongodb/MongodbMain.java
@@ -1,12 +1,17 @@
package info.xiaomo.mongodb;
-import io.swagger.annotations.ApiOperation;
+import io.swagger.v3.oas.models.OpenAPI;
+import io.swagger.v3.oas.models.info.Contact;
+import io.swagger.v3.oas.models.info.Info;
+import org.springdoc.core.models.GroupedOpenApi;
+import io.swagger.v3.oas.annotations.Hidden;
+import io.swagger.v3.oas.annotations.Operation;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.autoconfigure.domain.EntityScan;
-import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
-import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
+import org.springframework.boot.persistence.autoconfigure.EntityScan;
+import org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration;
+import org.springframework.boot.hibernate.autoconfigure.HibernateJpaAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@@ -14,14 +19,6 @@
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
-import springfox.documentation.annotations.ApiIgnore;
-import springfox.documentation.builders.ApiInfoBuilder;
-import springfox.documentation.builders.PathSelectors;
-import springfox.documentation.builders.RequestHandlerSelectors;
-import springfox.documentation.service.ApiInfo;
-import springfox.documentation.spi.DocumentationType;
-import springfox.documentation.spring.web.plugins.Docket;
-import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
* 把今天最好的表现当作明天最新的起点..~
@@ -41,7 +38,6 @@
@ComponentScan("info.xiaomo")
@EntityScan("info.xiaomo.*.model")
@RestController
-@EnableSwagger2
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class})
public class MongodbMain {
public static void main(String[] args) throws Exception {
@@ -49,29 +45,28 @@ public static void main(String[] args) throws Exception {
}
@RequestMapping(value = "/", method = RequestMethod.GET)
- @ApiIgnore()
- @ApiOperation(value = "重定向到api首页")
+ @Hidden
+ @Operation(summary = "重定向到api首页")
public ModelAndView index() {
return new ModelAndView("redirect:/swagger-ui.html");
}
@Bean
- public Docket createRestApi() {
- return new Docket(DocumentationType.SWAGGER_2)
- .apiInfo(apiInfo())
- .select()
- .apis(RequestHandlerSelectors.basePackage("info.xiaomo.mongodb"))
- .paths(PathSelectors.any())
+ public GroupedOpenApi mongodbApi() {
+ return GroupedOpenApi.builder()
+ .group("mongodb")
+ .packagesToScan("info.xiaomo.mongodb")
.build();
}
- private ApiInfo apiInfo() {
- return new ApiInfoBuilder()
- .title("Spring Boot中使用Swagger2构建RESTful APIs")
- .description("使用mongodb构建api接口")
- .termsOfServiceUrl("https://xiaomo.info/")
- .contact("小莫")
- .version("1.0")
- .build();
+ @Bean
+ public OpenAPI openApi() {
+ return new OpenAPI()
+ .info(new Info()
+ .title("Spring Boot中使用OpenAPI构建RESTful APIs")
+ .description("使用mongodb构建api接口")
+ .termsOfService("https://xiaomo.info/")
+ .contact(new Contact().name("小莫"))
+ .version("1.0"));
}
}
diff --git a/mongodb/src/main/java/info/xiaomo/mongodb/controller/MongoUserController.java b/mongodb/src/main/java/info/xiaomo/mongodb/controller/MongoUserController.java
index a7056409..f1d16e6e 100644
--- a/mongodb/src/main/java/info/xiaomo/mongodb/controller/MongoUserController.java
+++ b/mongodb/src/main/java/info/xiaomo/mongodb/controller/MongoUserController.java
@@ -1,10 +1,10 @@
package info.xiaomo.mongodb.controller;
+import io.swagger.v3.oas.annotations.tags.Tag;
import info.xiaomo.core.base.Result;
import info.xiaomo.core.constant.CodeConst;
import info.xiaomo.mongodb.model.MongoUser;
import info.xiaomo.mongodb.service.MongoUserService;
-import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -24,7 +24,7 @@
@RestController
@RequestMapping("mongodb")
-@Api("mongodb測試")
+@Tag(name = "mongodb測試")
public class MongoUserController {
private final MongoUserService service;
diff --git a/mongodb/src/main/java/info/xiaomo/mongodb/model/MongoUser.java b/mongodb/src/main/java/info/xiaomo/mongodb/model/MongoUser.java
index 12095176..3d86e3d3 100644
--- a/mongodb/src/main/java/info/xiaomo/mongodb/model/MongoUser.java
+++ b/mongodb/src/main/java/info/xiaomo/mongodb/model/MongoUser.java
@@ -1,6 +1,6 @@
package info.xiaomo.mongodb.model;
-import io.swagger.annotations.ApiModelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@@ -32,33 +32,33 @@ public class MongoUser {
@Id
private int id;
- @ApiModelProperty(value = "登录用户")
+ @Schema(description = "登录用户")
private String email;
- @ApiModelProperty(value = "昵称")
+ @Schema(description = "昵称")
private String userName;
- @ApiModelProperty(value = "密码")
+ @Schema(description = "密码")
private String password;
- @ApiModelProperty(value = "盐值")
+ @Schema(description = "盐值")
private String salt;
- @ApiModelProperty(value = "激活码")
+ @Schema(description = "激活码")
private String validateCode;
- @ApiModelProperty(value = "性别:1男2女0保密")
+ @Schema(description = "性别:1男2女0保密")
private int gender = 0;
- @ApiModelProperty(value = "电话")
+ @Schema(description = "电话")
private Long phone = 0L;
- @ApiModelProperty(value = "图片地址")
+ @Schema(description = "图片地址")
private String imgUrl = "";
- @ApiModelProperty(value = "地址")
+ @Schema(description = "地址")
private String address = "";
- @ApiModelProperty(value = "注册时间(时间戳)")
+ @Schema(description = "注册时间(时间戳)")
private Long registerTime = 0L;
}
diff --git a/mybatis/src/main/java/info/xiaomo/mybatis/MybatisMain.java b/mybatis/src/main/java/info/xiaomo/mybatis/MybatisMain.java
index b87e5e65..9ca3b963 100644
--- a/mybatis/src/main/java/info/xiaomo/mybatis/MybatisMain.java
+++ b/mybatis/src/main/java/info/xiaomo/mybatis/MybatisMain.java
@@ -2,7 +2,7 @@
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.autoconfigure.domain.EntityScan;
+import org.springframework.boot.persistence.autoconfigure.EntityScan;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
diff --git a/order/pom.xml b/order/pom.xml
index fed4e2b0..4bf14122 100644
--- a/order/pom.xml
+++ b/order/pom.xml
@@ -21,29 +21,17 @@
spring-boot-devtools
true
-
- io.springfox
- springfox-swagger2
-
-
- io.springfox
- springfox-swagger-ui
-
com.google.zxing
javase
- 3.2.1
com.google.zxing
core
- 3.3.3
-
- com.github.xiaoymin
- swagger-bootstrap-ui
- 1.5
+ org.springdoc
+ springdoc-openapi-starter-webmvc-ui
diff --git a/order/src/main/java/info/xiaomo/order/OrderMain.java b/order/src/main/java/info/xiaomo/order/OrderMain.java
index d6311aba..6b06485e 100644
--- a/order/src/main/java/info/xiaomo/order/OrderMain.java
+++ b/order/src/main/java/info/xiaomo/order/OrderMain.java
@@ -1,11 +1,16 @@
package info.xiaomo.order;
-import io.swagger.annotations.ApiOperation;
+import io.swagger.v3.oas.models.OpenAPI;
+import io.swagger.v3.oas.models.info.Contact;
+import io.swagger.v3.oas.models.info.Info;
+import org.springdoc.core.models.GroupedOpenApi;
+import io.swagger.v3.oas.annotations.Hidden;
+import io.swagger.v3.oas.annotations.Operation;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.autoconfigure.domain.EntityScan;
-import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
-import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
+import org.springframework.boot.persistence.autoconfigure.EntityScan;
+import org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration;
+import org.springframework.boot.hibernate.autoconfigure.HibernateJpaAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@@ -14,14 +19,6 @@
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-import springfox.documentation.annotations.ApiIgnore;
-import springfox.documentation.builders.ApiInfoBuilder;
-import springfox.documentation.builders.PathSelectors;
-import springfox.documentation.builders.RequestHandlerSelectors;
-import springfox.documentation.service.ApiInfo;
-import springfox.documentation.spi.DocumentationType;
-import springfox.documentation.spring.web.plugins.Docket;
-import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
@@ -30,7 +27,6 @@
@Configuration
@ComponentScan("info.xiaomo")
@EntityScan("info.xiaomo.*.model")
-@EnableSwagger2
@Controller
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class})
public class OrderMain implements WebMvcConfigurer {
@@ -45,29 +41,27 @@ public static void main(String[] args) {
* @return 接口
*/
@RequestMapping(value = "/", method = RequestMethod.GET)
- @ApiIgnore()
- @ApiOperation(value = "重定向到api首页")
+ @Hidden
+ @Operation(summary = "重定向到api首页")
public ModelAndView api() {
return new ModelAndView("redirect:/swagger-ui.html");
}
@Bean
- public Docket createRestApi() {
- return new Docket(DocumentationType.SWAGGER_2)
- .apiInfo(apiInfo())
- .select()
- .apis(RequestHandlerSelectors.basePackage("info.xiaomo.order"))
- .paths(PathSelectors.any())
+ public GroupedOpenApi orderApi() {
+ return GroupedOpenApi.builder()
+ .group("order")
+ .packagesToScan("info.xiaomo.order")
.build();
}
- private ApiInfo apiInfo() {
- return new ApiInfoBuilder()
- .title("Spring Boot中使用Swagger2构建RESTful APIs")
- .contact("小莫")
- .version("1.0")
- .build();
+ @Bean
+ public OpenAPI openApi() {
+ return new OpenAPI()
+ .info(new Info()
+ .title("Spring Boot中使用OpenAPI构建RESTful APIs")
+ .contact(new Contact().name("小莫"))
+ .version("1.0"));
}
-
}
diff --git a/order/src/main/java/info/xiaomo/order/controller/OrderController.java b/order/src/main/java/info/xiaomo/order/controller/OrderController.java
index 416d1c4d..0c1f5fe2 100644
--- a/order/src/main/java/info/xiaomo/order/controller/OrderController.java
+++ b/order/src/main/java/info/xiaomo/order/controller/OrderController.java
@@ -1,8 +1,14 @@
package info.xiaomo.order.controller;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Parameters;
+import io.swagger.v3.oas.annotations.enums.ParameterIn;
+import io.swagger.v3.oas.annotations.responses.ApiResponse;
+import io.swagger.v3.oas.annotations.responses.ApiResponses;
+import io.swagger.v3.oas.annotations.tags.Tag;
import info.xiaomo.core.base.Result;
import info.xiaomo.order.service.OrderService;
-import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PathVariable;
@@ -16,7 +22,7 @@
*/
@RestController
@RequestMapping("/order")
-@Api(value = "识别订单")
+@Tag(name = "识别订单")
public class OrderController {
private final OrderService service;
@@ -28,13 +34,13 @@ public OrderController(OrderService orderService) {
@RequestMapping(value = "forbid/{id}", method = RequestMethod.GET)
- @ApiOperation(value = "封号", notes = "根据传入的id对修改对应帐号状态", httpMethod = "GET")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "id", value = "后台用户唯一id", required = true, dataType = "Long", paramType = "path")
+ @Operation(summary = "封号", description = "根据传入的id对修改对应帐号状态")
+ @Parameters({
+ @Parameter(name = "id", description = "后台用户唯一id", required = true, in = ParameterIn.PATH)
})
@ApiResponses(value = {
- @ApiResponse(code = 404, message = "Not Found"),
- @ApiResponse(code = 400, message = "No Name Provided"),
+ @ApiResponse(responseCode = "404", description = "Not Found"),
+ @ApiResponse(responseCode = "400", description = "No Name Provided"),
})
public Result forbid(@PathVariable("id") Long id) {
return new Result<>(null);
diff --git a/order/src/main/java/info/xiaomo/order/model/OrderModel.java b/order/src/main/java/info/xiaomo/order/model/OrderModel.java
index 22b8cba9..d2762190 100644
--- a/order/src/main/java/info/xiaomo/order/model/OrderModel.java
+++ b/order/src/main/java/info/xiaomo/order/model/OrderModel.java
@@ -4,9 +4,9 @@
import info.xiaomo.core.base.BaseModel;
import lombok.*;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Table;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Table;
import java.io.Serializable;
/**
diff --git a/pom.xml b/pom.xml
index 5b1f7919..c8804fac 100644
--- a/pom.xml
+++ b/pom.xml
@@ -55,45 +55,40 @@
UTF-8
- 11
+ 21
+
+ 4.1.1
+
+ 26.7.0
+ 2.0.19
+ 1.18.48
- 3.5
-
- 4.13.1
-
- 8.0.28
-
- 1.7.21
-
- 1.1.7
+ 3.20.0
- 2.7
-
- [1.3.3,)
+ 2.22.0
- [1.2.31,)
-
- 1.14.2
-
- 2.5.12
-
- 3.5.1
-
- 2.19.1
-
- 1.4.7
-
- 1.18.14
+ 2.0.65
+
+ 2.2.0
+
+ 1.23.2
- 2.2.2
+ 3.1.1
+ 4.5.0
- 1.1.1
-
- 1.9.2
+ 4.1.0
+
+ 3.5.4
2.6.12
- 3.17
+ 5.5.1
+
+ 3.16.0
+
+ 3.6.0
+
+ 3.4.0
@@ -102,36 +97,30 @@
org.springframework.boot
- spring-boot-starter-parent
- ${spring-boot.version}
- pom
-
-
- org.springframework.boot
- spring-boot-starter-web
+ spring-boot-dependencies
${spring-boot.version}
pom
import
- dom4j
+ org.dom4j
dom4j
- 1.6.1
+ ${dom4j.version}
- junit
- junit
- ${junit.version}
- test
+ com.mysql
+ mysql-connector-j
+ ${mysql-connector.version}
- mysql
- mysql-connector-java
- ${mysql-connector}
+ org.slf4j
+ slf4j-api
+ ${slf4j.version}
+
org.slf4j
- slf4j-api
+ jul-to-slf4j
${slf4j.version}
@@ -140,9 +129,9 @@
${commons-io.version}
- com.alibaba
- fastjson
- ${fastjson.version}
+ com.alibaba.fastjson2
+ fastjson2
+ ${fastjson2.version}
org.apache.commons
@@ -150,31 +139,30 @@
${common-lang3.version}
- commons-fileupload
- commons-fileupload
- ${commons-fileupload.version}
+ org.projectlombok
+ lombok
+ ${lombok.version}
+
- javax.mail
- mail
- ${javax-mail.version}
+ org.springdoc
+ springdoc-openapi-starter-webmvc-ui
+ ${springdoc.version}
- org.projectlombok
- lombok
- ${lombak.version}
+ com.github.xiaoymin
+ knife4j-openapi3-jakarta-spring-boot-starter
+ ${knife4j.version}
-
- io.springfox
- springfox-swagger-ui
- ${springfox-swagger-ui.version}
+ com.google.zxing
+ core
+ ${zxing.version}
-
- io.springfox
- springfox-swagger2
- ${springfox-swagger-ui.version}
+ com.google.zxing
+ javase
+ ${zxing.version}
org.mybatis.spring.boot
@@ -209,9 +197,15 @@
maven-compiler-plugin
${maven-compiler-plugin.version}
- ${sources.version}
- ${sources.version}
+ ${sources.version}
${project.build.sourceEncoding}
+
+
+ org.projectlombok
+ lombok
+ ${lombok.version}
+
+
@@ -241,7 +235,7 @@
maven-source-plugin
- 3.2.0
+ ${maven-source-plugin.version}
true
diff --git a/rabbitmq/pom.xml b/rabbitmq/pom.xml
index eed80ec6..a9b3990b 100644
--- a/rabbitmq/pom.xml
+++ b/rabbitmq/pom.xml
@@ -21,6 +21,11 @@
org.springframework.boot
spring-boot-starter-amqp
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
diff --git a/rabbitmq/src/main/java/info/xiaomo/rabbitmq/RabbitMqMain.java b/rabbitmq/src/main/java/info/xiaomo/rabbitmq/RabbitMqMain.java
index 7030a585..2ee7eb30 100644
--- a/rabbitmq/src/main/java/info/xiaomo/rabbitmq/RabbitMqMain.java
+++ b/rabbitmq/src/main/java/info/xiaomo/rabbitmq/RabbitMqMain.java
@@ -3,8 +3,8 @@
import org.springframework.amqp.core.Queue;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
-import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
+import org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration;
+import org.springframework.boot.hibernate.autoconfigure.HibernateJpaAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
diff --git a/rabbitmq/src/test/java/test/RabbitMqTests.java b/rabbitmq/src/test/java/test/RabbitMqTests.java
index f95714a7..1e2ddab8 100644
--- a/rabbitmq/src/test/java/test/RabbitMqTests.java
+++ b/rabbitmq/src/test/java/test/RabbitMqTests.java
@@ -1,7 +1,7 @@
package test;
import info.xiaomo.rabbitmq.config.Sender;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
public class RabbitMqTests {
diff --git a/redis/src/main/java/info/xiaomo/redis/RedisMain.java b/redis/src/main/java/info/xiaomo/redis/RedisMain.java
index 1f42cee6..eb2e4380 100644
--- a/redis/src/main/java/info/xiaomo/redis/RedisMain.java
+++ b/redis/src/main/java/info/xiaomo/redis/RedisMain.java
@@ -2,8 +2,8 @@
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
-import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
+import org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration;
+import org.springframework.boot.hibernate.autoconfigure.HibernateJpaAutoConfiguration;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
diff --git a/redis/src/main/java/info/xiaomo/redis/job/TaskJob.java b/redis/src/main/java/info/xiaomo/redis/job/TaskJob.java
index 11244433..5156ef92 100644
--- a/redis/src/main/java/info/xiaomo/redis/job/TaskJob.java
+++ b/redis/src/main/java/info/xiaomo/redis/job/TaskJob.java
@@ -1,6 +1,6 @@
package info.xiaomo.redis.job;
-import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson2.JSON;
import info.xiaomo.redis.model.CityInfo;
import info.xiaomo.redis.service.CityService;
import org.slf4j.Logger;
diff --git a/redis/src/main/resources/config/application.properties b/redis/src/main/resources/config/application.properties
index 7721fe42..05fdb197 100644
--- a/redis/src/main/resources/config/application.properties
+++ b/redis/src/main/resources/config/application.properties
@@ -5,15 +5,15 @@ server.max-http-header-size=20971520
# redis
# Redis\u6570\u636E\u5E93\u7D22\u5F15\uFF08\u9ED8\u8BA4\u4E3A0\uFF09
-spring.redis.database=0
-spring.redis.host=ip
-spring.redis.port=6379
+spring.data.redis.database=0
+spring.data.redis.host=ip
+spring.data.redis.port=6379
# Redis\u670D\u52A1\u5668\u8FDE\u63A5\u5BC6\u7801\uFF08\u9ED8\u8BA4\u4E3A\u7A7A\uFF09
-spring.redis.password=
+spring.data.redis.password=
# \u8FDE\u63A5\u6C60\u6700\u5927\u8FDE\u63A5\u6570\uFF08\u4F7F\u7528\u8D1F\u503C\u8868\u793A\u6CA1\u6709\u9650\u5236\uFF09
-spring.redis.pool.max-active=8
+spring.data.redis.lettuce.pool.max-active=8
# \u8FDE\u63A5\u6C60\u6700\u5927\u963B\u585E\u7B49\u5F85\u65F6\u95F4\uFF08\u4F7F\u7528\u8D1F\u503C\u8868\u793A\u6CA1\u6709\u9650\u5236\uFF09
-spring.redis.pool.max-wait=-1
-spring.redis.pool.max-idle=8
-spring.redis.pool.min-idle=0
-spring.redis.timeout=0
\ No newline at end of file
+spring.data.redis.lettuce.pool.max-wait=-1
+spring.data.redis.lettuce.pool.max-idle=8
+spring.data.redis.lettuce.pool.min-idle=0
+spring.data.redis.timeout=0
\ No newline at end of file
diff --git a/scheduled/src/main/java/info/xiaomo/scheduled/ScheduledMain.java b/scheduled/src/main/java/info/xiaomo/scheduled/ScheduledMain.java
index ada6b33a..04777c96 100644
--- a/scheduled/src/main/java/info/xiaomo/scheduled/ScheduledMain.java
+++ b/scheduled/src/main/java/info/xiaomo/scheduled/ScheduledMain.java
@@ -2,8 +2,8 @@
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
-import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
+import org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration;
+import org.springframework.boot.hibernate.autoconfigure.HibernateJpaAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableAsync;
diff --git a/security/src/main/java/info/xiaomo/security/SecurityMain.java b/security/src/main/java/info/xiaomo/security/SecurityMain.java
index 01e306a3..2e07c2ec 100644
--- a/security/src/main/java/info/xiaomo/security/SecurityMain.java
+++ b/security/src/main/java/info/xiaomo/security/SecurityMain.java
@@ -1,18 +1,22 @@
package info.xiaomo.security;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.autoconfigure.domain.EntityScan;
-import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
-import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
+import org.springframework.boot.persistence.autoconfigure.EntityScan;
+import org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration;
+import org.springframework.boot.hibernate.autoconfigure.HibernateJpaAutoConfiguration;
+import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
-import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
+import org.springframework.security.config.Customizer;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
-import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
+import org.springframework.security.core.userdetails.User;
+import org.springframework.security.core.userdetails.UserDetails;
+import org.springframework.security.core.userdetails.UserDetailsService;
+import org.springframework.security.provisioning.InMemoryUserDetailsManager;
+import org.springframework.security.web.SecurityFilterChain;
/**
* 把今天最好的表现当作明天最新的起点..~
@@ -33,30 +37,34 @@
@ComponentScan("info.xiaomo")
@EntityScan("info.xiaomo.*.model")
@EnableWebSecurity
-public class SecurityMain extends WebSecurityConfigurerAdapter {
+public class SecurityMain {
public static void main(String[] args) throws Exception {
SpringApplication.run(SecurityMain.class, args);
}
- @Override
- protected void configure(HttpSecurity http) throws Exception {
- http.authorizeRequests()
- .antMatchers("/", "/home").permitAll()
- .anyRequest().authenticated()
- .and()
- .formLogin()
- .loginPage("/login")
- .permitAll()
- .and()
- .logout()
- .permitAll();
+ @Bean
+ public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
+ return http
+ .authorizeHttpRequests(requests -> requests
+ .requestMatchers("/", "/home").permitAll()
+ .anyRequest().authenticated())
+ .formLogin(login -> login
+ .loginPage("/login")
+ .permitAll())
+ .logout(Customizer.withDefaults())
+ .build();
}
- @Autowired
- public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
- auth.inMemoryAuthentication()
- .withUser("test").password("test").roles("USER");
+ /**
+ * 演示用的内存用户。{noop} 前缀表示密码不加密, 仅适用于示例, 生产环境请改用 BCryptPasswordEncoder。
+ */
+ @Bean
+ public UserDetailsService userDetailsService() {
+ UserDetails user = User.withUsername("test")
+ .password("{noop}test")
+ .roles("USER")
+ .build();
+ return new InMemoryUserDetailsManager(user);
}
-
}
diff --git a/socket/src/main/java/info/xiaomo/chat/ChatMain.java b/socket/src/main/java/info/xiaomo/chat/ChatMain.java
index b144a642..bd9287ca 100644
--- a/socket/src/main/java/info/xiaomo/chat/ChatMain.java
+++ b/socket/src/main/java/info/xiaomo/chat/ChatMain.java
@@ -2,9 +2,9 @@
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.autoconfigure.domain.EntityScan;
-import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
-import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
+import org.springframework.boot.persistence.autoconfigure.EntityScan;
+import org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration;
+import org.springframework.boot.hibernate.autoconfigure.HibernateJpaAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
diff --git a/socket/src/main/java/info/xiaomo/chat/socket/MyWebSocket.java b/socket/src/main/java/info/xiaomo/chat/socket/MyWebSocket.java
index 57dcd631..8d6dee18 100644
--- a/socket/src/main/java/info/xiaomo/chat/socket/MyWebSocket.java
+++ b/socket/src/main/java/info/xiaomo/chat/socket/MyWebSocket.java
@@ -7,11 +7,11 @@
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
-import javax.websocket.OnClose;
-import javax.websocket.OnMessage;
-import javax.websocket.OnOpen;
-import javax.websocket.Session;
-import javax.websocket.server.ServerEndpoint;
+import jakarta.websocket.OnClose;
+import jakarta.websocket.OnMessage;
+import jakarta.websocket.OnOpen;
+import jakarta.websocket.Session;
+import jakarta.websocket.server.ServerEndpoint;
import java.io.IOException;
import java.util.concurrent.CopyOnWriteArraySet;
diff --git a/thymeleaf/src/main/java/info/xiaomo/thymeleaf/ThymeleafMain.java b/thymeleaf/src/main/java/info/xiaomo/thymeleaf/ThymeleafMain.java
index a561841f..e48270de 100644
--- a/thymeleaf/src/main/java/info/xiaomo/thymeleaf/ThymeleafMain.java
+++ b/thymeleaf/src/main/java/info/xiaomo/thymeleaf/ThymeleafMain.java
@@ -2,9 +2,9 @@
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.autoconfigure.domain.EntityScan;
-import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
-import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
+import org.springframework.boot.persistence.autoconfigure.EntityScan;
+import org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration;
+import org.springframework.boot.hibernate.autoconfigure.HibernateJpaAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
diff --git a/website/pom.xml b/website/pom.xml
index 3a00bf4f..e263399c 100644
--- a/website/pom.xml
+++ b/website/pom.xml
@@ -30,20 +30,7 @@
spring-boot-devtools
true
-
- io.springfox
- springfox-swagger2
-
-
- io.springfox
- springfox-swagger-ui
-
-
- com.github.xiaoymin
- swagger-bootstrap-ui
- 1.5
-
-
+
org.springframework
spring-webmvc
@@ -55,6 +42,10 @@
org.springframework.boot
spring-boot-starter-web
+
+ org.springdoc
+ springdoc-openapi-starter-webmvc-ui
+
diff --git a/website/src/main/java/info/xiaomo/website/XiaomoMain.java b/website/src/main/java/info/xiaomo/website/XiaomoMain.java
index 1d2c5aa7..5bbf6d65 100644
--- a/website/src/main/java/info/xiaomo/website/XiaomoMain.java
+++ b/website/src/main/java/info/xiaomo/website/XiaomoMain.java
@@ -1,10 +1,15 @@
package info.xiaomo.website;
+import io.swagger.v3.oas.models.OpenAPI;
+import io.swagger.v3.oas.models.info.Contact;
+import io.swagger.v3.oas.models.info.Info;
+import org.springdoc.core.models.GroupedOpenApi;
+import io.swagger.v3.oas.annotations.Hidden;
+import io.swagger.v3.oas.annotations.Operation;
import info.xiaomo.website.view.UserView;
-import io.swagger.annotations.ApiOperation;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.autoconfigure.domain.EntityScan;
+import org.springframework.boot.persistence.autoconfigure.EntityScan;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
@@ -16,14 +21,6 @@
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-import springfox.documentation.annotations.ApiIgnore;
-import springfox.documentation.builders.ApiInfoBuilder;
-import springfox.documentation.builders.PathSelectors;
-import springfox.documentation.builders.RequestHandlerSelectors;
-import springfox.documentation.service.ApiInfo;
-import springfox.documentation.spi.DocumentationType;
-import springfox.documentation.spring.web.plugins.Docket;
-import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
* 把今天最好的表现当作明天最新的起点..~
@@ -46,7 +43,6 @@
@EnableTransactionManagement
@EnableJpaRepositories("info.xiaomo.*.dao")
@EnableCaching
-@EnableSwagger2
@Controller
public class XiaomoMain implements WebMvcConfigurer {
@@ -65,31 +61,29 @@ public String index() {
* @return 接口
*/
@RequestMapping(value = "/api", method = RequestMethod.GET)
- @ApiIgnore()
- @ApiOperation(value = "重定向到api首页")
+ @Hidden
+ @Operation(summary = "重定向到api首页")
public ModelAndView api() {
return new ModelAndView("redirect:/swagger-ui.html");
}
@Bean
- public Docket createRestApi() {
- return new Docket(DocumentationType.SWAGGER_2)
- .apiInfo(apiInfo())
- .select()
- .apis(RequestHandlerSelectors.basePackage("info.xiaomo.website"))
- .paths(PathSelectors.any())
+ public GroupedOpenApi websiteApi() {
+ return GroupedOpenApi.builder()
+ .group("website")
+ .packagesToScan("info.xiaomo.website")
.build();
}
- private ApiInfo apiInfo() {
- return new ApiInfoBuilder()
- .title("Spring Boot中使用Swagger2构建RESTful APIs")
- .description("api根地址:http://api.xiaomo.info:8080/")
- .termsOfServiceUrl("https://xiaomo.info/")
- .contact("小莫")
- .version("1.0")
- .build();
+ @Bean
+ public OpenAPI openApi() {
+ return new OpenAPI()
+ .info(new Info()
+ .title("Spring Boot中使用OpenAPI构建RESTful APIs")
+ .description("api根地址:http://api.xiaomo.info:8080/")
+ .termsOfService("https://xiaomo.info/")
+ .contact(new Contact().name("小莫"))
+ .version("1.0"));
}
-
}
diff --git a/website/src/main/java/info/xiaomo/website/controller/AdminUserController.java b/website/src/main/java/info/xiaomo/website/controller/AdminUserController.java
index c79e934b..c6c7780e 100644
--- a/website/src/main/java/info/xiaomo/website/controller/AdminUserController.java
+++ b/website/src/main/java/info/xiaomo/website/controller/AdminUserController.java
@@ -1,5 +1,12 @@
package info.xiaomo.website.controller;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Parameters;
+import io.swagger.v3.oas.annotations.enums.ParameterIn;
+import io.swagger.v3.oas.annotations.responses.ApiResponse;
+import io.swagger.v3.oas.annotations.responses.ApiResponses;
+import io.swagger.v3.oas.annotations.tags.Tag;
import info.xiaomo.core.base.BaseController;
import info.xiaomo.core.base.Result;
import info.xiaomo.core.constant.CodeConst;
@@ -8,7 +15,6 @@
import info.xiaomo.core.untils.RandomUtil;
import info.xiaomo.website.model.AdminModel;
import info.xiaomo.website.service.AdminUserService;
-import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.http.MediaType;
@@ -40,7 +46,7 @@
*/
@RestController
@RequestMapping("/adminUser")
-@Api(value = "后台用户相关api", description = "后台用户相关api")
+@Tag(name = "后台用户相关api", description = "后台用户相关api")
public class AdminUserController extends BaseController {
private final AdminUserService service;
@@ -56,14 +62,14 @@ public AdminUserController(AdminUserService service) {
* @return Result
*/
@RequestMapping(value = "login/{userName}/{password}", method = RequestMethod.POST)
- @ApiOperation(value = "获取用户信息", notes = "根据用户帐号和密码登录后台", httpMethod = "POST")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "userName", value = "用户名", required = true, dataType = "Result", paramType = "path"),
- @ApiImplicitParam(name = "password", value = "用户名", required = true, dataType = "Result", paramType = "path")
+ @Operation(summary = "获取用户信息", description = "根据用户帐号和密码登录后台")
+ @Parameters({
+ @Parameter(name = "userName", description = "用户名", required = true, in = ParameterIn.PATH),
+ @Parameter(name = "password", description = "用户名", required = true, in = ParameterIn.PATH)
})
@ApiResponses(value = {
- @ApiResponse(code = 404, message = "Not Found"),
- @ApiResponse(code = 400, message = "No Name Provided"),
+ @ApiResponse(responseCode = "404", description = "Not Found"),
+ @ApiResponse(responseCode = "400", description = "No Name Provided"),
})
public Result login(@PathVariable("userName") String userName, @PathVariable("password") String password) {
AdminModel adminModel = service.findAdminUserByUserName(userName);
@@ -82,11 +88,11 @@ public Result login(@PathVariable("userName") String userName, @Path
*
* @return Result
*/
- @ApiOperation(value = "添加后台用户", notes = "传一个管理员用户模型过来然后保存到数据库", httpMethod = "POST")
+ @Operation(summary = "添加后台用户", description = "传一个管理员用户模型过来然后保存到数据库")
@RequestMapping(value = "add", method = RequestMethod.POST)
@ApiResponses(value = {
- @ApiResponse(code = 404, message = "Not Found"),
- @ApiResponse(code = 400, message = "No Name Provided"),
+ @ApiResponse(responseCode = "404", description = "Not Found"),
+ @ApiResponse(responseCode = "400", description = "No Name Provided"),
})
public Result add(@RequestBody AdminModel model) {
AdminModel adminModel = service.findAdminUserByUserName(model.getUserName());
@@ -106,14 +112,14 @@ public Result add(@RequestBody AdminModel model) {
* @param id id
* @return Result
*/
- @ApiOperation(value = "查找用户", notes = "根据传来的id查找用户并返回", httpMethod = "GET")
+ @Operation(summary = "查找用户", description = "根据传来的id查找用户并返回")
@RequestMapping(value = "findById/{id}", method = RequestMethod.GET)
- @ApiImplicitParams({
- @ApiImplicitParam(name = "id", value = "后台用户唯一id", required = true, dataType = "Long", paramType = "path")
+ @Parameters({
+ @Parameter(name = "id", description = "后台用户唯一id", required = true, in = ParameterIn.PATH)
})
@ApiResponses(value = {
- @ApiResponse(code = 404, message = "Not Found"),
- @ApiResponse(code = 400, message = "No Name Provided"),
+ @ApiResponse(responseCode = "404", description = "Not Found"),
+ @ApiResponse(responseCode = "400", description = "No Name Provided"),
})
public Result findUserById(@PathVariable("id") Long id) {
AdminModel adminModel = service.findAdminUserById(id);
@@ -163,14 +169,14 @@ public Result findById(@PathVariable Long id) {
* @return Result
*/
@Override
- @ApiOperation(value = "查找用户", notes = "根据传来的用户名查找用户并返回", httpMethod = "GET")
+ @Operation(summary = "查找用户", description = "根据传来的用户名查找用户并返回")
@RequestMapping(value = "findByName/{userName}", method = RequestMethod.GET)
- @ApiImplicitParams({
- @ApiImplicitParam(name = "userName", value = "用户名", required = true, dataType = "String", paramType = "path")
+ @Parameters({
+ @Parameter(name = "userName", description = "用户名", required = true, in = ParameterIn.PATH)
})
@ApiResponses(value = {
- @ApiResponse(code = 404, message = "Not Found"),
- @ApiResponse(code = 400, message = "No Name Provided"),
+ @ApiResponse(responseCode = "404", description = "Not Found"),
+ @ApiResponse(responseCode = "400", description = "No Name Provided"),
})
public Result findByName(@PathVariable("userName") String userName) {
AdminModel adminModel = service.findAdminUserByUserName(userName);
@@ -242,10 +248,10 @@ public Result delByIds(@PathVariable List ids) {
* @throws UserNotFoundException UserNotFoundException
*/
@RequestMapping(value = "changePassword", method = RequestMethod.POST)
- @ApiOperation(value = "修改用户密码", notes = "传来模型验证并修改密码", httpMethod = "POST")
+ @Operation(summary = "修改用户密码", description = "传来模型验证并修改密码")
@ApiResponses(value = {
- @ApiResponse(code = 404, message = "Not Found"),
- @ApiResponse(code = 400, message = "No Name Provided"),
+ @ApiResponse(responseCode = "404", description = "Not Found"),
+ @ApiResponse(responseCode = "400", description = "No Name Provided"),
})
public Result changePassword(@RequestBody AdminModel model) throws UserNotFoundException {
AdminModel adminModel = service.findAdminUserByUserName(model.getUserName());
@@ -266,10 +272,10 @@ public Result changePassword(@RequestBody AdminModel model) throws UserNotFoundE
* @return 不分页
*/
@RequestMapping(value = "findAll", method = RequestMethod.GET)
- @ApiOperation(value = "返回所有用户信息", notes = "不分页", httpMethod = "GET")
+ @Operation(summary = "返回所有用户信息", description = "不分页")
@ApiResponses(value = {
- @ApiResponse(code = 404, message = "Not Found"),
- @ApiResponse(code = 400, message = "No Name Provided"),
+ @ApiResponse(responseCode = "404", description = "Not Found"),
+ @ApiResponse(responseCode = "400", description = "No Name Provided"),
})
public Result getAll() {
List pages = service.getAdminUsers();
@@ -287,13 +293,13 @@ public Result getAll() {
* @throws UserNotFoundException UserNotFoundException
*/
@RequestMapping(value = "delete/{id}", method = RequestMethod.GET)
- @ApiOperation(value = "删除用户", notes = "根据传入的id删除对应的用户", httpMethod = "GET")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "id", value = "用户唯一id", required = true, dataType = "Long", paramType = "path")
+ @Operation(summary = "删除用户", description = "根据传入的id删除对应的用户")
+ @Parameters({
+ @Parameter(name = "id", description = "用户唯一id", required = true, in = ParameterIn.PATH)
})
@ApiResponses(value = {
- @ApiResponse(code = 404, message = "Not Found"),
- @ApiResponse(code = 400, message = "No Name Provided"),
+ @ApiResponse(responseCode = "404", description = "Not Found"),
+ @ApiResponse(responseCode = "400", description = "No Name Provided"),
})
public Result deleteUserById(@PathVariable("id") Long id) throws UserNotFoundException {
AdminModel adminModel = service.findAdminUserById(id);
@@ -312,13 +318,13 @@ public Result deleteUserById(@PathVariable("id") Long id) throws UserNotFoundExc
* @throws UserNotFoundException UserNotFoundException
*/
@RequestMapping(value = "update/{userName}", method = RequestMethod.POST)
- @ApiOperation(value = "更新用户信息", notes = "根据传入的模型更新用户信息", httpMethod = "POST")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "userName", value = "用户名", required = true, dataType = "String", paramType = "path")
+ @Operation(summary = "更新用户信息", description = "根据传入的模型更新用户信息")
+ @Parameters({
+ @Parameter(name = "userName", description = "用户名", required = true, in = ParameterIn.PATH)
})
@ApiResponses(value = {
- @ApiResponse(code = 404, message = "Not Found"),
- @ApiResponse(code = 400, message = "No Name Provided"),
+ @ApiResponse(responseCode = "404", description = "Not Found"),
+ @ApiResponse(responseCode = "400", description = "No Name Provided"),
})
public Result update(@PathVariable("userName") String userName) throws UserNotFoundException {
AdminModel adminModel = service.findAdminUserByUserName(userName);
@@ -338,13 +344,13 @@ public Result update(@PathVariable("userName") String userName) throws UserNotFo
* @throws UserNotFoundException UserNotFoundException
*/
@RequestMapping(value = "forbid/{id}", method = RequestMethod.GET)
- @ApiOperation(value = "封号", notes = "根据传入的id对修改对应帐号状态", httpMethod = "GET")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "id", value = "后台用户唯一id", required = true, dataType = "Long", paramType = "path")
+ @Operation(summary = "封号", description = "根据传入的id对修改对应帐号状态")
+ @Parameters({
+ @Parameter(name = "id", description = "后台用户唯一id", required = true, in = ParameterIn.PATH)
})
@ApiResponses(value = {
- @ApiResponse(code = 404, message = "Not Found"),
- @ApiResponse(code = 400, message = "No Name Provided"),
+ @ApiResponse(responseCode = "404", description = "Not Found"),
+ @ApiResponse(responseCode = "400", description = "No Name Provided"),
})
public Result forbid(@PathVariable("id") Long id) throws UserNotFoundException {
AdminModel model = service.findAdminUserById(id);
diff --git a/website/src/main/java/info/xiaomo/website/controller/ChangeLogController.java b/website/src/main/java/info/xiaomo/website/controller/ChangeLogController.java
index 86452ba6..04c057b7 100644
--- a/website/src/main/java/info/xiaomo/website/controller/ChangeLogController.java
+++ b/website/src/main/java/info/xiaomo/website/controller/ChangeLogController.java
@@ -1,14 +1,15 @@
package info.xiaomo.website.controller;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Parameters;
+import io.swagger.v3.oas.annotations.enums.ParameterIn;
+import io.swagger.v3.oas.annotations.tags.Tag;
import info.xiaomo.core.base.BaseController;
import info.xiaomo.core.base.Result;
import info.xiaomo.core.constant.CodeConst;
import info.xiaomo.website.model.ChangeLogModel;
import info.xiaomo.website.service.ChangeLogService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.http.MediaType;
@@ -32,7 +33,7 @@
**/
@RestController
@RequestMapping("/changeLog")
-@Api(value = "更新日志相关api", description = "更新日志相关api")
+@Tag(name = "更新日志相关api", description = "更新日志相关api")
public class ChangeLogController extends BaseController {
private final ChangeLogService service;
@@ -50,9 +51,9 @@ public ChangeLogController(ChangeLogService service) {
*/
@Override
@RequestMapping(value = "findById/{id}", method = RequestMethod.GET)
- @ApiOperation(value = "通过id查找", notes = "通过id查找", httpMethod = "GET")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "id", value = "唯一id", required = true, dataType = "Long", paramType = "path")
+ @Operation(summary = "通过id查找", description = "通过id查找")
+ @Parameters({
+ @Parameter(name = "id", description = "唯一id", required = true, in = ParameterIn.PATH)
})
public Result findById(@PathVariable("id") Long id) {
ChangeLogModel changeLogModel = service.findById(id);
@@ -69,9 +70,9 @@ public Result findById(@PathVariable("id") Long id) {
*/
@Override
@RequestMapping(value = "findByName/{name}", method = RequestMethod.GET)
- @ApiOperation(value = "通过名字查找", notes = "通过名字查找", httpMethod = "GET")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "name", value = "更新日志内容", required = true, dataType = "String", paramType = "path")
+ @Operation(summary = "通过名字查找", description = "通过名字查找")
+ @Parameters({
+ @Parameter(name = "name", description = "更新日志内容", required = true, in = ParameterIn.PATH)
})
public Result findByName(@PathVariable("name") String name) {
ChangeLogModel model = service.findByName(name);
@@ -143,7 +144,7 @@ public Result delByIds(@PathVariable List ids) {
*/
@Override
@RequestMapping(value = "findAll", method = RequestMethod.GET)
- @ApiOperation(value = "分页查询更新日志", notes = "分页查询更新日志", httpMethod = "GET")
+ @Operation(summary = "分页查询更新日志", description = "分页查询更新日志")
public Result findAll() {
List pages = service.findAll();
if (pages == null || pages.size() <= 0) {
@@ -169,7 +170,7 @@ public Result findAll(@PathVariable int start, @PathVariable int pageSize)
*
* @return result
*/
- @ApiOperation(value = "增加更新日志", notes = "增加更新日志", httpMethod = "POST")
+ @Operation(summary = "增加更新日志", description = "增加更新日志")
@RequestMapping(value = "add", method = RequestMethod.POST)
public Result add(@RequestBody ChangeLogModel model) {
ChangeLogModel changeLogModel = service.findByName(model.getName());
@@ -189,7 +190,7 @@ public Result add(@RequestBody ChangeLogModel model) {
*
* @return result
*/
- @ApiOperation(value = "修改更新日志", notes = "修改更新日志", httpMethod = "POST")
+ @Operation(summary = "修改更新日志", description = "修改更新日志")
@RequestMapping(value = "update", method = RequestMethod.POST)
public Result update(@RequestBody ChangeLogModel model) {
ChangeLogModel changeLogModel = service.findByName(model.getName());
@@ -207,9 +208,9 @@ public Result update(@RequestBody ChangeLogModel model) {
* 删除更新日志
*/
@RequestMapping(value = "delete/{id}", method = RequestMethod.GET)
- @ApiOperation(value = "删除更新日志", notes = "删除更新日志", httpMethod = "GET")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "id", value = "唯一id", required = true, dataType = "Long", paramType = "path")
+ @Operation(summary = "删除更新日志", description = "删除更新日志")
+ @Parameters({
+ @Parameter(name = "id", description = "唯一id", required = true, in = ParameterIn.PATH)
})
public Result deleteById(@PathVariable("id") Long id) {
ChangeLogModel changeLogModel = service.findById(id);
diff --git a/website/src/main/java/info/xiaomo/website/controller/LinkController.java b/website/src/main/java/info/xiaomo/website/controller/LinkController.java
index 1afd6385..35049bd8 100644
--- a/website/src/main/java/info/xiaomo/website/controller/LinkController.java
+++ b/website/src/main/java/info/xiaomo/website/controller/LinkController.java
@@ -1,14 +1,15 @@
package info.xiaomo.website.controller;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Parameters;
+import io.swagger.v3.oas.annotations.enums.ParameterIn;
+import io.swagger.v3.oas.annotations.tags.Tag;
import info.xiaomo.core.base.BaseController;
import info.xiaomo.core.base.Result;
import info.xiaomo.core.constant.CodeConst;
import info.xiaomo.website.model.LinkModel;
import info.xiaomo.website.service.LinkService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.http.MediaType;
@@ -32,7 +33,7 @@
**/
@RestController
@RequestMapping("/link")
-@Api(value = "友情链接相关api", description = "友情链接相关api")
+@Tag(name = "友情链接相关api", description = "友情链接相关api")
public class LinkController extends BaseController {
private final LinkService service;
@@ -49,9 +50,9 @@ public LinkController(LinkService service) {
* @return model
*/
@RequestMapping(value = "findById/{id}", method = RequestMethod.GET)
- @ApiOperation(value = "通过id查找", notes = "通过id查找", httpMethod = "GET")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "id", value = "唯一id", required = true, dataType = "Long", paramType = "path")
+ @Operation(summary = "通过id查找", description = "通过id查找")
+ @Parameters({
+ @Parameter(name = "id", description = "唯一id", required = true, in = ParameterIn.PATH)
})
public Result findLinkById(@PathVariable("id") Long id) {
LinkModel model = service.findById(id);
@@ -69,9 +70,9 @@ public Result findLinkById(@PathVariable("id") Long id) {
*/
@Override
@RequestMapping(value = "findByName/{name}", method = RequestMethod.GET)
- @ApiOperation(value = "根据名字查找", notes = "根据名字查找", httpMethod = "GET")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "name", value = "友情链接名字", required = true, dataType = "String", paramType = "path")
+ @Operation(summary = "根据名字查找", description = "根据名字查找")
+ @Parameters({
+ @Parameter(name = "name", description = "友情链接名字", required = true, in = ParameterIn.PATH)
})
public Result findByName(@PathVariable("name") String name) {
LinkModel model = service.findByName(name);
@@ -144,7 +145,7 @@ public Result delByIds(@PathVariable List ids) {
*/
@Override
@RequestMapping(value = "findAll", method = RequestMethod.GET)
- @ApiOperation(value = "返回所有数据", notes = "返回所有数据", httpMethod = "GET")
+ @Operation(summary = "返回所有数据", description = "返回所有数据")
public Result findAll() {
List pages = service.findAll();
if (pages == null || pages.size() == 0) {
@@ -182,7 +183,7 @@ public Result findById(@PathVariable Long id) {
* @return model
*/
@RequestMapping(value = "add", method = RequestMethod.POST)
- @ApiOperation(value = "添加链接", notes = "添加链接", httpMethod = "POST")
+ @Operation(summary = "添加链接", description = "添加链接")
public Result add(@RequestBody LinkModel model) {
LinkModel linkModel = service.findByName(model.getName());
if (linkModel != null) {
@@ -200,7 +201,7 @@ public Result add(@RequestBody LinkModel model) {
*
* @return model
*/
- @ApiOperation(value = "更新链接", notes = "更新链接", httpMethod = "POST")
+ @Operation(summary = "更新链接", description = "更新链接")
@RequestMapping(value = "update", method = RequestMethod.POST)
public Result update(@RequestBody LinkModel model) {
LinkModel linkModel = service.findById(model.getId());
@@ -220,9 +221,9 @@ public Result update(@RequestBody LinkModel model) {
* @return model
*/
@RequestMapping(value = "delete/{id}", method = RequestMethod.GET)
- @ApiOperation(value = "删除链接", notes = "删除链接", httpMethod = "GET")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "id", value = "唯一id", required = true, dataType = "Long", paramType = "path")
+ @Operation(summary = "删除链接", description = "删除链接")
+ @Parameters({
+ @Parameter(name = "id", description = "唯一id", required = true, in = ParameterIn.PATH)
})
public Result delete(@PathVariable("id") Long id) {
LinkModel linkmodel = service.findById(id);
diff --git a/website/src/main/java/info/xiaomo/website/controller/TechnologyController.java b/website/src/main/java/info/xiaomo/website/controller/TechnologyController.java
index 46601a9a..e2103313 100644
--- a/website/src/main/java/info/xiaomo/website/controller/TechnologyController.java
+++ b/website/src/main/java/info/xiaomo/website/controller/TechnologyController.java
@@ -1,14 +1,15 @@
package info.xiaomo.website.controller;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Parameters;
+import io.swagger.v3.oas.annotations.enums.ParameterIn;
+import io.swagger.v3.oas.annotations.tags.Tag;
import info.xiaomo.core.base.BaseController;
import info.xiaomo.core.base.Result;
import info.xiaomo.core.constant.CodeConst;
import info.xiaomo.website.model.TechnologyModel;
import info.xiaomo.website.service.TechnologyService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.http.MediaType;
@@ -33,7 +34,7 @@
@RestController
@RequestMapping("/technology")
-@Api(value = "技术中心相关api", description = "技术中心相关api")
+@Tag(name = "技术中心相关api", description = "技术中心相关api")
public class TechnologyController extends BaseController {
private final TechnologyService service;
@@ -44,10 +45,10 @@ public TechnologyController(TechnologyService service) {
@Override
- @ApiOperation(value = "根据id查找技术", notes = "根据id查找技术", httpMethod = "GET")
+ @Operation(summary = "根据id查找技术", description = "根据id查找技术")
@RequestMapping(value = "/findById/{id}", method = RequestMethod.GET)
- @ApiImplicitParams({
- @ApiImplicitParam(name = "id", value = "唯一Id", required = true, dataType = "Long", paramType = "path")
+ @Parameters({
+ @Parameter(name = "id", description = "唯一Id", required = true, in = ParameterIn.PATH)
})
public Result findById(@PathVariable Long id) {
TechnologyModel model = service.findById(id);
@@ -58,10 +59,10 @@ public Result findById(@PathVariable Long id) {
}
@Override
- @ApiOperation(value = "根据名字查找技术", notes = "根据名字查找技术", httpMethod = "GET")
+ @Operation(summary = "根据名字查找技术", description = "根据名字查找技术")
@RequestMapping(value = "/findByName/{name}", method = RequestMethod.GET)
- @ApiImplicitParams({
- @ApiImplicitParam(name = "name", value = "技术名字", required = true, dataType = "name", paramType = "path")
+ @Parameters({
+ @Parameter(name = "name", description = "技术名字", required = true, in = ParameterIn.PATH)
})
public Result findByName(@PathVariable String name) {
TechnologyModel model = service.findByName(name);
@@ -127,7 +128,7 @@ public Result delByIds(@PathVariable List ids) {
}
@Override
- @ApiOperation(value = "查找所有", notes = "查找所有", httpMethod = "GET")
+ @Operation(summary = "查找所有", description = "查找所有")
@RequestMapping(value = "/findAll", method = RequestMethod.GET)
public Result findAll() {
List all = service.findAll();
@@ -150,7 +151,7 @@ public Result findAll(@PathVariable int start, @PathVariable int pageSize)
}
- @ApiOperation(value = "添加链接", notes = "添加链接", httpMethod = "POST")
+ @Operation(summary = "添加链接", description = "添加链接")
@RequestMapping(value = "/add", method = RequestMethod.POST)
public Result add(@RequestBody TechnologyModel model) {
TechnologyModel addModel = service.findByName(model.getName());
@@ -161,7 +162,7 @@ public Result add(@RequestBody TechnologyModel model) {
return new Result<>(addModel);
}
- @ApiOperation(value = "更新链接", notes = "更新链接", httpMethod = "POST")
+ @Operation(summary = "更新链接", description = "更新链接")
@RequestMapping(value = "/update", method = RequestMethod.POST)
public Result update(@RequestBody TechnologyModel model) {
TechnologyModel update = service.findById(model.getId());
@@ -174,9 +175,9 @@ public Result update(@RequestBody TechnologyModel model) {
@RequestMapping(value = "/delete/{id}", method = RequestMethod.GET)
- @ApiOperation(value = "删除链接", notes = "删除链接", httpMethod = "GET")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "id", value = "唯一id", required = true, dataType = "Long", paramType = "path")
+ @Operation(summary = "删除链接", description = "删除链接")
+ @Parameters({
+ @Parameter(name = "id", description = "唯一id", required = true, in = ParameterIn.PATH)
})
public Result delete(@PathVariable Long id) {
TechnologyModel model = service.findById(id);
diff --git a/website/src/main/java/info/xiaomo/website/controller/UserController.java b/website/src/main/java/info/xiaomo/website/controller/UserController.java
index 5a4ca6d9..f51720d8 100644
--- a/website/src/main/java/info/xiaomo/website/controller/UserController.java
+++ b/website/src/main/java/info/xiaomo/website/controller/UserController.java
@@ -1,5 +1,10 @@
package info.xiaomo.website.controller;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Parameters;
+import io.swagger.v3.oas.annotations.enums.ParameterIn;
+import io.swagger.v3.oas.annotations.tags.Tag;
import info.xiaomo.core.base.BaseController;
import info.xiaomo.core.base.Result;
import info.xiaomo.core.constant.CodeConst;
@@ -11,10 +16,6 @@
import info.xiaomo.core.untils.TimeUtil;
import info.xiaomo.website.model.UserModel;
import info.xiaomo.website.service.UserService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiOperation;
import org.hibernate.service.spi.ServiceException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
@@ -40,7 +41,7 @@
**/
@RestController
@RequestMapping("/user")
-@Api(value = "用户相关api", description = "用户相关api")
+@Tag(name = "用户相关api", description = "用户相关api")
public class UserController extends BaseController {
private final UserService service;
@@ -56,10 +57,10 @@ public UserController(UserService service) {
* @param id id
* @return result
*/
- @ApiOperation(value = "查找用户", notes = "查找用户", httpMethod = "GET")
+ @Operation(summary = "查找用户", description = "查找用户")
@RequestMapping(value = "findById/{id}", method = RequestMethod.GET)
- @ApiImplicitParams({
- @ApiImplicitParam(name = "id", value = "唯一id", required = true, dataType = "Long", paramType = "path"),
+ @Parameters({
+ @Parameter(name = "id", description = "唯一id", required = true, in = ParameterIn.PATH),
})
@SuppressWarnings("unchecked")
public Result findUserById(@PathVariable("id") Long id) {
@@ -70,7 +71,7 @@ public Result findUserById(@PathVariable("id") Long id) {
/**
* 添加用户
*/
- @ApiOperation(value = "添加用户", notes = "添加用户", httpMethod = "POST")
+ @Operation(summary = "添加用户", description = "添加用户")
@RequestMapping(value = "addUser", method = RequestMethod.POST)
public Result addUser(@RequestBody UserModel user) {
UserModel userModel = service.findUserByEmail(user.getEmail());
@@ -90,10 +91,10 @@ public Result addUser(@RequestBody UserModel user) {
*
* @return result
*/
- @ApiOperation(value = "注册", notes = "注册用户并发送验证链接到邮箱", httpMethod = "POST")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "用户名", required = true, dataType = "String", paramType = "path"),
- @ApiImplicitParam(name = "密码", required = true, dataType = "String", paramType = "path")
+ @Operation(summary = "注册", description = "注册用户并发送验证链接到邮箱")
+ @Parameters({
+ @Parameter(name = "用户名", required = true, in = ParameterIn.PATH),
+ @Parameter(name = "密码", required = true, in = ParameterIn.PATH)
})
@RequestMapping(value = "register/{email}/{password}", method = RequestMethod.POST)
public Result register(@PathVariable("email") String email, @PathVariable("password") String password) {
@@ -113,10 +114,10 @@ public Result register(@PathVariable("email") String email, @PathVariable("passw
*
* @return result
*/
- @ApiOperation(value = "登录", notes = "登录", httpMethod = "POST")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "email", value = "邮箱", required = true, dataType = "String", paramType = "path"),
- @ApiImplicitParam(name = "password", value = "密码", required = true, dataType = "String", paramType = "path")
+ @Operation(summary = "登录", description = "登录")
+ @Parameters({
+ @Parameter(name = "email", description = "邮箱", required = true, in = ParameterIn.PATH),
+ @Parameter(name = "password", description = "密码", required = true, in = ParameterIn.PATH)
})
@RequestMapping(value = "login/{email}/{password}", method = RequestMethod.POST)
public Result login(@PathVariable("email") String email, @PathVariable("password") String password) {
@@ -139,7 +140,7 @@ public Result login(@PathVariable("email") String email, @PathVariable("password
* @return model
* @throws UserNotFoundException UserNotFoundException
*/
- @ApiOperation(value = "修改密码", notes = "修改密码", httpMethod = "POST")
+ @Operation(summary = "修改密码", description = "修改密码")
@RequestMapping(value = "changePassword", method = RequestMethod.POST)
public Result changePassword(@RequestBody UserModel user) throws UserNotFoundException {
UserModel userByEmail = service.findUserByEmail(user.getEmail());
@@ -160,7 +161,7 @@ public Result changePassword(@RequestBody UserModel user) throws UserNotFoundExc
* @return model
* @throws UserNotFoundException UserNotFoundException
*/
- @ApiOperation(value = "更新用户信息", notes = "更新用户信息", httpMethod = "POST")
+ @Operation(summary = "更新用户信息", description = "更新用户信息")
@RequestMapping(value = "update", method = RequestMethod.POST)
public Result update(@RequestBody UserModel user) throws UserNotFoundException {
UserModel userModel = service.findUserByEmail(user.getEmail());
@@ -183,7 +184,7 @@ public Result update(@RequestBody UserModel user) throws UserNotFoundException {
*
* @return result
*/
- @ApiOperation(value = "返回所有用户数据", notes = "返回所有用户数据", httpMethod = "GET")
+ @Operation(summary = "返回所有用户数据", description = "返回所有用户数据")
@RequestMapping(value = "findAll", method = RequestMethod.GET)
public Result getAll() {
List pages = service.findAll();
@@ -201,9 +202,9 @@ public Result getAll() {
* @return result
*/
@RequestMapping(value = "delete/{id}", method = RequestMethod.GET)
- @ApiOperation(value = "根据id删除用户", notes = "根据id删除用户", httpMethod = "GET")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "id", value = "唯一id", required = true, dataType = "Long", paramType = "path"),
+ @Operation(summary = "根据id删除用户", description = "根据id删除用户")
+ @Parameters({
+ @Parameter(name = "id", description = "唯一id", required = true, in = ParameterIn.PATH),
})
public Result deleteUserById(@PathVariable("id") Long id) throws UserNotFoundException {
UserModel userModel = service.deleteUserById(id);
@@ -216,7 +217,7 @@ public Result deleteUserById(@PathVariable("id") Long id) throws UserNotFoundExc
/**
* 处理激活
*/
- @ApiOperation(value = "处理激活", notes = "处理激活", httpMethod = "POST")
+ @Operation(summary = "处理激活", description = "处理激活")
@RequestMapping(value = "validateEmail", method = RequestMethod.POST)
public Result validateEmail(@RequestBody UserModel user
) throws ServiceException {
diff --git a/website/src/main/java/info/xiaomo/website/controller/WorksController.java b/website/src/main/java/info/xiaomo/website/controller/WorksController.java
index 9817f244..3b60d502 100644
--- a/website/src/main/java/info/xiaomo/website/controller/WorksController.java
+++ b/website/src/main/java/info/xiaomo/website/controller/WorksController.java
@@ -1,13 +1,14 @@
package info.xiaomo.website.controller;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Parameters;
+import io.swagger.v3.oas.annotations.enums.ParameterIn;
+import io.swagger.v3.oas.annotations.tags.Tag;
import info.xiaomo.core.base.Result;
import info.xiaomo.core.constant.CodeConst;
import info.xiaomo.website.model.WorksModel;
import info.xiaomo.website.service.WorksService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -30,7 +31,7 @@
@RequestMapping("/works")
@RestController
-@Api(value = "作品相关api")
+@Tag(name = "作品相关api")
public class WorksController {
private final WorksService service;
@@ -42,9 +43,9 @@ public WorksController(WorksService service) {
@RequestMapping(value = "/findById/{id}", method = RequestMethod.GET)
- @ApiOperation(value = "根据id查找作品", notes = "根据id查找作品", httpMethod = "GET")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "id", value = "唯一id", required = true, dataType = "Long", paramType = "path"),
+ @Operation(summary = "根据id查找作品", description = "根据id查找作品")
+ @Parameters({
+ @Parameter(name = "id", description = "唯一id", required = true, in = ParameterIn.PATH),
})
public Result findById(@PathVariable Long id) {
WorksModel model = service.findById(id);
@@ -55,7 +56,7 @@ public Result findById(@PathVariable Long id) {
}
@RequestMapping(value = "/findAll", method = RequestMethod.GET)
- @ApiOperation(value = "查找所有", notes = "查找所有", httpMethod = "GET")
+ @Operation(summary = "查找所有", description = "查找所有")
public Result> findAll() {
List all = service.findAll();
if (all == null || all.isEmpty()) {
@@ -66,9 +67,9 @@ public Result> findAll() {
@RequestMapping(value = "/findByName/{name}", method = RequestMethod.GET)
- @ApiOperation(value = "根据名字查找作品", notes = "根据名字查找作品", httpMethod = "GET")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "name", value = "作品名字", required = true, dataType = "String", paramType = "path"),
+ @Operation(summary = "根据名字查找作品", description = "根据名字查找作品")
+ @Parameters({
+ @Parameter(name = "name", description = "作品名字", required = true, in = ParameterIn.PATH),
})
public Result findByName(@PathVariable String name) {
WorksModel model = service.findByName(name);
@@ -78,7 +79,7 @@ public Result findByName(@PathVariable String name) {
return new Result<>(model);
}
- @ApiOperation(value = "添加作品", notes = "添加作品", httpMethod = "POST")
+ @Operation(summary = "添加作品", description = "添加作品")
@RequestMapping(value = "/add", method = RequestMethod.POST)
public Result add(@RequestBody WorksModel model) {
WorksModel addModel = service.findByName(model.getName());
@@ -89,7 +90,7 @@ public Result add(@RequestBody WorksModel model) {
return new Result<>(addModel);
}
- @ApiOperation(value = "更新作品", notes = "更新作品", httpMethod = "POST")
+ @Operation(summary = "更新作品", description = "更新作品")
@RequestMapping(value = "/update", method = RequestMethod.POST)
public Result update(@RequestBody WorksModel model) {
WorksModel worksModel = service.findById(model.getId());
@@ -101,10 +102,10 @@ public Result update(@RequestBody WorksModel model) {
}
- @ApiOperation(value = "根据id删除作品", notes = "根据id删除作品", httpMethod = "GET")
+ @Operation(summary = "根据id删除作品", description = "根据id删除作品")
@RequestMapping(value = "/delete/{id}", method = RequestMethod.GET)
- @ApiImplicitParams({
- @ApiImplicitParam(name = "id", value = "唯一id", required = true, dataType = "Long", paramType = "path"),
+ @Parameters({
+ @Parameter(name = "id", description = "唯一id", required = true, in = ParameterIn.PATH),
})
public Result delete(@PathVariable Long id) {
WorksModel model = service.findById(id);
diff --git a/website/src/main/java/info/xiaomo/website/dao/base/CommonDao.java b/website/src/main/java/info/xiaomo/website/dao/base/CommonDao.java
index f208448f..437ca7c7 100644
--- a/website/src/main/java/info/xiaomo/website/dao/base/CommonDao.java
+++ b/website/src/main/java/info/xiaomo/website/dao/base/CommonDao.java
@@ -4,9 +4,9 @@
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
-import javax.persistence.EntityManager;
-import javax.persistence.PersistenceContext;
-import javax.persistence.Query;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.PersistenceContext;
+import jakarta.persistence.Query;
import java.util.List;
/**
diff --git a/website/src/main/java/info/xiaomo/website/interceptor/LoginInterceptor.java b/website/src/main/java/info/xiaomo/website/interceptor/LoginInterceptor.java
index a981ef75..f284ea3d 100644
--- a/website/src/main/java/info/xiaomo/website/interceptor/LoginInterceptor.java
+++ b/website/src/main/java/info/xiaomo/website/interceptor/LoginInterceptor.java
@@ -4,8 +4,8 @@
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
/**
diff --git a/website/src/main/java/info/xiaomo/website/model/AdminModel.java b/website/src/main/java/info/xiaomo/website/model/AdminModel.java
index 7209d379..6f9b3bdf 100644
--- a/website/src/main/java/info/xiaomo/website/model/AdminModel.java
+++ b/website/src/main/java/info/xiaomo/website/model/AdminModel.java
@@ -4,9 +4,9 @@
import info.xiaomo.core.base.BaseModel;
import lombok.*;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Table;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Table;
import java.io.Serializable;
/**
diff --git a/website/src/main/java/info/xiaomo/website/model/ChangeLogModel.java b/website/src/main/java/info/xiaomo/website/model/ChangeLogModel.java
index bfc74198..a7937c76 100644
--- a/website/src/main/java/info/xiaomo/website/model/ChangeLogModel.java
+++ b/website/src/main/java/info/xiaomo/website/model/ChangeLogModel.java
@@ -4,9 +4,9 @@
import info.xiaomo.core.base.BaseModel;
import lombok.*;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Table;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Table;
import java.io.Serializable;
/**
diff --git a/website/src/main/java/info/xiaomo/website/model/LinkModel.java b/website/src/main/java/info/xiaomo/website/model/LinkModel.java
index 5907fff0..aaa31851 100644
--- a/website/src/main/java/info/xiaomo/website/model/LinkModel.java
+++ b/website/src/main/java/info/xiaomo/website/model/LinkModel.java
@@ -4,9 +4,9 @@
import info.xiaomo.core.base.BaseModel;
import lombok.*;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Table;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Table;
import java.io.Serializable;
/**
diff --git a/website/src/main/java/info/xiaomo/website/model/TechnologyModel.java b/website/src/main/java/info/xiaomo/website/model/TechnologyModel.java
index ad3d9e05..b2b91573 100644
--- a/website/src/main/java/info/xiaomo/website/model/TechnologyModel.java
+++ b/website/src/main/java/info/xiaomo/website/model/TechnologyModel.java
@@ -4,9 +4,9 @@
import info.xiaomo.core.base.BaseModel;
import lombok.*;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Table;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Table;
/**
* 把今天最好的表现当作明天最新的起点..~
diff --git a/website/src/main/java/info/xiaomo/website/model/UserModel.java b/website/src/main/java/info/xiaomo/website/model/UserModel.java
index 1dfba5b9..8f7df5cc 100644
--- a/website/src/main/java/info/xiaomo/website/model/UserModel.java
+++ b/website/src/main/java/info/xiaomo/website/model/UserModel.java
@@ -4,9 +4,9 @@
import info.xiaomo.core.base.BaseModel;
import lombok.*;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Table;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Table;
import java.io.Serializable;
/**
diff --git a/website/src/main/java/info/xiaomo/website/model/WorksModel.java b/website/src/main/java/info/xiaomo/website/model/WorksModel.java
index 6fef0f0e..28ef1b1b 100644
--- a/website/src/main/java/info/xiaomo/website/model/WorksModel.java
+++ b/website/src/main/java/info/xiaomo/website/model/WorksModel.java
@@ -4,9 +4,9 @@
import info.xiaomo.core.base.BaseModel;
import lombok.*;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Table;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Table;
/**
* 把今天最好的表现当作明天最新的起点..~
diff --git a/website/src/main/java/info/xiaomo/website/util/MailUtil.java b/website/src/main/java/info/xiaomo/website/util/MailUtil.java
index d338d6d1..fb04cb15 100644
--- a/website/src/main/java/info/xiaomo/website/util/MailUtil.java
+++ b/website/src/main/java/info/xiaomo/website/util/MailUtil.java
@@ -7,9 +7,9 @@
import org.slf4j.LoggerFactory;
import org.springframework.ui.freemarker.FreeMarkerTemplateUtils;
-import javax.mail.*;
-import javax.mail.internet.InternetAddress;
-import javax.mail.internet.MimeMessage;
+import jakarta.mail.*;
+import jakarta.mail.internet.InternetAddress;
+import jakarta.mail.internet.MimeMessage;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Date;
diff --git a/website/src/main/resources/config/application.properties b/website/src/main/resources/config/application.properties
index f830f53d..bab40874 100644
--- a/website/src/main/resources/config/application.properties
+++ b/website/src/main/resources/config/application.properties
@@ -14,7 +14,7 @@ spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#spring.jackson.time-zone=GMT+8
#jpa
-spring.jpa.database-platform=org.hibernate.dialect.MySQL5Dialect
+spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
@@ -22,20 +22,20 @@ spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.Ph
# redis
# Redis\u6570\u636E\u5E93\u7D22\u5F15\uFF08\u9ED8\u8BA4\u4E3A0\uFF09
-spring.redis.database=0
-spring.redis.host=ip
-spring.redis.port=6379
-spring.redis.password=
+spring.data.redis.database=0
+spring.data.redis.host=ip
+spring.data.redis.port=6379
+spring.data.redis.password=
# \u8FDE\u63A5\u6C60\u6700\u5927\u8FDE\u63A5\u6570\uFF08\u4F7F\u7528\u8D1F\u503C\u8868\u793A\u6CA1\u6709\u9650\u5236\uFF09
-spring.redis.pool.max-active=8
+spring.data.redis.lettuce.pool.max-active=8
# \u8FDE\u63A5\u6C60\u6700\u5927\u963B\u585E\u7B49\u5F85\u65F6\u95F4\uFF08\u4F7F\u7528\u8D1F\u503C\u8868\u793A\u6CA1\u6709\u9650\u5236\uFF09
-spring.redis.pool.max-wait=-1
+spring.data.redis.lettuce.pool.max-wait=-1
# \u8FDE\u63A5\u6C60\u4E2D\u7684\u6700\u5927\u7A7A\u95F2\u8FDE\u63A5
-spring.redis.pool.max-idle=8
+spring.data.redis.lettuce.pool.max-idle=8
# \u8FDE\u63A5\u6C60\u4E2D\u7684\u6700\u5C0F\u7A7A\u95F2\u8FDE\u63A5
-spring.redis.pool.min-idle=0
+spring.data.redis.lettuce.pool.min-idle=0
# \u8FDE\u63A5\u8D85\u65F6\u65F6\u95F4\uFF08\u6BEB\u79D2\uFF09
-spring.redis.timeout=0
+spring.data.redis.timeout=0
#\u90AE\u4EF6
mail.host=smtp.163.com