diff --git a/README.md b/README.md
index c62d7014..48164fa7 100644
--- a/README.md
+++ b/README.md
@@ -56,8 +56,8 @@ docker run --name yunshu-nas -p 8888:8888 -e MYSQL_URL=mysql8 -e MYSQL_PORT=3306
| nas.basic-auth.password | basic基础认证密码 | basic基础认证密码,默认空 |
| nas.basic-auth.ignore-path | basic基础认证忽略路径 | 多个路径使用英文逗号分隔,默认空 |
| nas.server-url | 服务端地址,用于前端调用后端API地址 | http://127.0.0.1:8888 |
-| ENABLED_ELASTICSEARCH | 是否开启Elasticsearch | true |
-| ELASTICSEARCH_URI | Elasticsearch服务端URL | 空 |
+| ENABLED_ELASTICSEARCH | 是否开启Elasticsearch | false |
+| ELASTICSEARCH_URI | Elasticsearch服务端URL | http://localhost:9200 |
# 启动脚本(aria2c 可以不用)
diff --git a/nas-common/src/main/java/top/itning/yunshunas/common/socket/ProgressWebSocket.java b/nas-common/src/main/java/top/itning/yunshunas/common/socket/ProgressWebSocket.java
index 9c522b99..c1f4bd48 100644
--- a/nas-common/src/main/java/top/itning/yunshunas/common/socket/ProgressWebSocket.java
+++ b/nas-common/src/main/java/top/itning/yunshunas/common/socket/ProgressWebSocket.java
@@ -4,8 +4,8 @@
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
-import javax.websocket.*;
-import javax.websocket.server.ServerEndpoint;
+import jakarta.websocket.*;
+import jakarta.websocket.server.ServerEndpoint;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
diff --git a/nas-common/src/main/java/top/itning/yunshunas/common/util/MultipartFileSender.java b/nas-common/src/main/java/top/itning/yunshunas/common/util/MultipartFileSender.java
index a986d91b..1c62ca15 100644
--- a/nas-common/src/main/java/top/itning/yunshunas/common/util/MultipartFileSender.java
+++ b/nas-common/src/main/java/top/itning/yunshunas/common/util/MultipartFileSender.java
@@ -4,9 +4,9 @@
import org.slf4j.LoggerFactory;
import org.springframework.http.MediaType;
-import javax.servlet.ServletOutputStream;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletOutputStream;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
diff --git a/nas-deploy/pom.xml b/nas-deploy/pom.xml
index f0831d35..bef4dc1c 100644
--- a/nas-deploy/pom.xml
+++ b/nas-deploy/pom.xml
@@ -36,6 +36,11 @@
org.springframework.boot
spring-boot-starter-websocket
+
+ org.springframework.boot
+ spring-boot-properties-migrator
+ runtime
+
diff --git a/nas-deploy/src/main/java/top/itning/yunshunas/config/BeanConfig.java b/nas-deploy/src/main/java/top/itning/yunshunas/config/BeanConfig.java
index baf9a6bd..78bf45d8 100644
--- a/nas-deploy/src/main/java/top/itning/yunshunas/config/BeanConfig.java
+++ b/nas-deploy/src/main/java/top/itning/yunshunas/config/BeanConfig.java
@@ -5,7 +5,7 @@
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;
-import javax.servlet.MultipartConfigElement;
+import jakarta.servlet.MultipartConfigElement;
/**
* @author itning
diff --git a/nas-deploy/src/main/java/top/itning/yunshunas/config/deploy/CustomWebMvcConfig.java b/nas-deploy/src/main/java/top/itning/yunshunas/config/deploy/CustomWebMvcConfig.java
index bf40fb92..955267bc 100644
--- a/nas-deploy/src/main/java/top/itning/yunshunas/config/deploy/CustomWebMvcConfig.java
+++ b/nas-deploy/src/main/java/top/itning/yunshunas/config/deploy/CustomWebMvcConfig.java
@@ -15,7 +15,7 @@
public class CustomWebMvcConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
- String[] allMethod = Arrays.stream(HttpMethod.values()).map(Enum::name).toArray(String[]::new);
+ String[] allMethod = Arrays.stream(HttpMethod.values()).map(HttpMethod::name).toArray(String[]::new);
registry.addMapping("/**")
.allowedOriginPatterns("*")
.allowCredentials(true)
diff --git a/nas-deploy/src/main/java/top/itning/yunshunas/config/log/LogWebSocket.java b/nas-deploy/src/main/java/top/itning/yunshunas/config/log/LogWebSocket.java
index d626b90f..323b66b0 100644
--- a/nas-deploy/src/main/java/top/itning/yunshunas/config/log/LogWebSocket.java
+++ b/nas-deploy/src/main/java/top/itning/yunshunas/config/log/LogWebSocket.java
@@ -5,8 +5,8 @@
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
-import javax.websocket.*;
-import javax.websocket.server.ServerEndpoint;
+import jakarta.websocket.*;
+import jakarta.websocket.server.ServerEndpoint;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
diff --git a/nas-deploy/src/main/java/top/itning/yunshunas/config/security/BasicFilter.java b/nas-deploy/src/main/java/top/itning/yunshunas/config/security/BasicFilter.java
index bfd954e0..9ae39635 100644
--- a/nas-deploy/src/main/java/top/itning/yunshunas/config/security/BasicFilter.java
+++ b/nas-deploy/src/main/java/top/itning/yunshunas/config/security/BasicFilter.java
@@ -11,10 +11,10 @@
import org.springframework.web.filter.OncePerRequestFilter;
import top.itning.yunshunas.common.config.NasProperties;
-import javax.servlet.FilterChain;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.nio.charset.StandardCharsets;
diff --git a/nas-deploy/src/main/java/top/itning/yunshunas/controller/FrontPageController.java b/nas-deploy/src/main/java/top/itning/yunshunas/controller/FrontPageController.java
index c18cc063..5b988e96 100644
--- a/nas-deploy/src/main/java/top/itning/yunshunas/controller/FrontPageController.java
+++ b/nas-deploy/src/main/java/top/itning/yunshunas/controller/FrontPageController.java
@@ -9,7 +9,7 @@
import org.springframework.web.bind.annotation.GetMapping;
import top.itning.yunshunas.common.config.NasProperties;
-import javax.annotation.PostConstruct;
+import jakarta.annotation.PostConstruct;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
diff --git a/nas-deploy/src/main/resources/application.properties b/nas-deploy/src/main/resources/application.properties
index 0e4b0ec0..65370248 100644
--- a/nas-deploy/src/main/resources/application.properties
+++ b/nas-deploy/src/main/resources/application.properties
@@ -17,7 +17,7 @@ spring.datasource.url=jdbc:mysql://${MYSQL_URL:localhost}:${MYSQL_PORT:3306}/yun
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.username=${MYSQL_USERNAME:root}
spring.datasource.password=${MYSQL_PASSWORD:root}
-spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect
+spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
spring.jpa.show-sql=false
spring.jpa.open-in-view=false
spring.jpa.hibernate.ddl-auto=update
@@ -69,5 +69,5 @@ nas.file-data-source.lyric-file-dir=/home/lyric_yunshu
# ElasticSearch配置
#
##########################################################
-spring.data.elasticsearch.repositories.enabled=${ENABLED_ELASTICSEARCH:true}
-spring.elasticsearch.uris=${ELASTICSEARCH_URI}
+spring.data.elasticsearch.repositories.enabled=${ENABLED_ELASTICSEARCH:false}
+spring.elasticsearch.uris=${ELASTICSEARCH_URI:http://localhost:9200}
diff --git a/nas-music/src/main/java/top/itning/yunshunas/music/controller/FileController.java b/nas-music/src/main/java/top/itning/yunshunas/music/controller/FileController.java
index d948f748..55efd224 100644
--- a/nas-music/src/main/java/top/itning/yunshunas/music/controller/FileController.java
+++ b/nas-music/src/main/java/top/itning/yunshunas/music/controller/FileController.java
@@ -6,9 +6,9 @@
import org.springframework.web.bind.annotation.*;
import top.itning.yunshunas.music.service.FileService;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.constraints.NotNull;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.NotNull;
import java.io.IOException;
/**
diff --git a/nas-music/src/main/java/top/itning/yunshunas/music/controller/MusicController.java b/nas-music/src/main/java/top/itning/yunshunas/music/controller/MusicController.java
index f230176a..99ecf709 100644
--- a/nas-music/src/main/java/top/itning/yunshunas/music/controller/MusicController.java
+++ b/nas-music/src/main/java/top/itning/yunshunas/music/controller/MusicController.java
@@ -21,8 +21,8 @@
import top.itning.yunshunas.music.service.MusicService;
import top.itning.yunshunas.music.service.SearchService;
-import javax.validation.constraints.NotEmpty;
-import javax.validation.constraints.NotNull;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
import java.util.List;
/**
diff --git a/nas-music/src/main/java/top/itning/yunshunas/music/controller/MusicManageApiController.java b/nas-music/src/main/java/top/itning/yunshunas/music/controller/MusicManageApiController.java
index d57f9b7f..3d09a2ae 100644
--- a/nas-music/src/main/java/top/itning/yunshunas/music/controller/MusicManageApiController.java
+++ b/nas-music/src/main/java/top/itning/yunshunas/music/controller/MusicManageApiController.java
@@ -14,7 +14,7 @@
import top.itning.yunshunas.music.dto.MusicManageDTO;
import top.itning.yunshunas.music.service.MusicManageService;
-import javax.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotEmpty;
/**
* 音乐管理接口
diff --git a/nas-music/src/main/java/top/itning/yunshunas/music/entity/Music.java b/nas-music/src/main/java/top/itning/yunshunas/music/entity/Music.java
index 0c6532db..4710f550 100644
--- a/nas-music/src/main/java/top/itning/yunshunas/music/entity/Music.java
+++ b/nas-music/src/main/java/top/itning/yunshunas/music/entity/Music.java
@@ -4,7 +4,7 @@
import org.hibernate.annotations.CreationTimestamp;
import org.hibernate.annotations.UpdateTimestamp;
-import javax.persistence.*;
+import jakarta.persistence.*;
import java.util.Date;
/**
diff --git a/nas-music/src/main/java/top/itning/yunshunas/music/exception/ExceptionResolver.java b/nas-music/src/main/java/top/itning/yunshunas/music/exception/ExceptionResolver.java
index a45189b9..2020cf76 100644
--- a/nas-music/src/main/java/top/itning/yunshunas/music/exception/ExceptionResolver.java
+++ b/nas-music/src/main/java/top/itning/yunshunas/music/exception/ExceptionResolver.java
@@ -7,8 +7,8 @@
import org.springframework.web.bind.annotation.ResponseBody;
import top.itning.yunshunas.common.model.RestModel;
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.ConstraintViolationException;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.ConstraintViolationException;
/**
* @author itning
diff --git a/nas-music/src/main/java/top/itning/yunshunas/music/service/FileService.java b/nas-music/src/main/java/top/itning/yunshunas/music/service/FileService.java
index 974c8167..c31ba1e2 100644
--- a/nas-music/src/main/java/top/itning/yunshunas/music/service/FileService.java
+++ b/nas-music/src/main/java/top/itning/yunshunas/music/service/FileService.java
@@ -2,8 +2,8 @@
import top.itning.yunshunas.music.dto.MusicMetaInfo;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
diff --git a/nas-music/src/main/java/top/itning/yunshunas/music/service/impl/FileServiceImpl.java b/nas-music/src/main/java/top/itning/yunshunas/music/service/impl/FileServiceImpl.java
index 55b98790..247a79cd 100644
--- a/nas-music/src/main/java/top/itning/yunshunas/music/service/impl/FileServiceImpl.java
+++ b/nas-music/src/main/java/top/itning/yunshunas/music/service/impl/FileServiceImpl.java
@@ -14,9 +14,9 @@
import top.itning.yunshunas.music.service.FileService;
import top.itning.yunshunas.music.service.MusicMetaInfoService;
-import javax.servlet.ServletOutputStream;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletOutputStream;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
diff --git a/nas-music/src/main/java/top/itning/yunshunas/music/service/impl/MusicServiceImpl.java b/nas-music/src/main/java/top/itning/yunshunas/music/service/impl/MusicServiceImpl.java
index f88b0cf4..3d5ff2ad 100644
--- a/nas-music/src/main/java/top/itning/yunshunas/music/service/impl/MusicServiceImpl.java
+++ b/nas-music/src/main/java/top/itning/yunshunas/music/service/impl/MusicServiceImpl.java
@@ -12,7 +12,7 @@
import top.itning.yunshunas.music.repository.MusicRepository;
import top.itning.yunshunas.music.service.MusicService;
-import javax.transaction.Transactional;
+import jakarta.transaction.Transactional;
/**
* @author itning
diff --git a/nas-music/src/main/java/top/itning/yunshunas/music/service/impl/SearchServiceImpl.java b/nas-music/src/main/java/top/itning/yunshunas/music/service/impl/SearchServiceImpl.java
index 4be304de..650ad2d5 100644
--- a/nas-music/src/main/java/top/itning/yunshunas/music/service/impl/SearchServiceImpl.java
+++ b/nas-music/src/main/java/top/itning/yunshunas/music/service/impl/SearchServiceImpl.java
@@ -1,15 +1,19 @@
package top.itning.yunshunas.music.service.impl;
+import co.elastic.clients.elasticsearch._types.query_dsl.MatchPhraseQuery;
+import co.elastic.clients.elasticsearch._types.query_dsl.Query;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
-import org.elasticsearch.index.query.QueryBuilders;
-import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.data.domain.Pageable;
-import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
+import org.springframework.data.elasticsearch.client.elc.ElasticsearchTemplate;
+import org.springframework.data.elasticsearch.client.elc.NativeQueryBuilder;
import org.springframework.data.elasticsearch.core.SearchHits;
-import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
+import org.springframework.data.elasticsearch.core.query.HighlightQuery;
+import org.springframework.data.elasticsearch.core.query.highlight.Highlight;
+import org.springframework.data.elasticsearch.core.query.highlight.HighlightField;
+import org.springframework.data.elasticsearch.core.query.highlight.HighlightFieldParameters;
import org.springframework.stereotype.Service;
import top.itning.yunshunas.music.datasource.CoverDataSource;
import top.itning.yunshunas.music.datasource.LyricDataSource;
@@ -42,20 +46,25 @@ public class SearchServiceImpl implements SearchService {
private static final String SEARCH_FILED_FOR_LYRIC = "content";
private final LyricElasticsearchRepository lyricElasticsearchRepository;
- private final ElasticsearchRestTemplate elasticsearchRestTemplate;
private final MusicRepository musicRepository;
private final MusicDataSource musicDataSource;
private final LyricDataSource lyricDataSource;
private final CoverDataSource coverDataSource;
+ private final ElasticsearchTemplate elasticsearchTemplate;
@Autowired
- public SearchServiceImpl(LyricElasticsearchRepository lyricElasticsearchRepository, ElasticsearchRestTemplate elasticsearchRestTemplate, MusicRepository musicRepository, MusicDataSource musicDataSource, LyricDataSource lyricDataSource, CoverDataSource coverDataSource) {
+ public SearchServiceImpl(LyricElasticsearchRepository lyricElasticsearchRepository,
+ MusicRepository musicRepository,
+ MusicDataSource musicDataSource,
+ LyricDataSource lyricDataSource,
+ CoverDataSource coverDataSource,
+ ElasticsearchTemplate elasticsearchTemplate) {
this.lyricElasticsearchRepository = lyricElasticsearchRepository;
- this.elasticsearchRestTemplate = elasticsearchRestTemplate;
this.musicRepository = musicRepository;
this.musicDataSource = musicDataSource;
this.lyricDataSource = lyricDataSource;
this.coverDataSource = coverDataSource;
+ this.elasticsearchTemplate = elasticsearchTemplate;
}
@Override
@@ -96,14 +105,15 @@ public void deleteLyric(String lyricId) {
@Override
public List searchLyric(String keyword, Pageable pageable) {
- SearchHits search = elasticsearchRestTemplate.search(
- new NativeSearchQueryBuilder()
- .withQuery(QueryBuilders.matchPhraseQuery(SEARCH_FILED_FOR_LYRIC, keyword))
- .withHighlightBuilder(new HighlightBuilder().field(SEARCH_FILED_FOR_LYRIC, 50, 1))
+ SearchHits search = elasticsearchTemplate.search(
+ new NativeQueryBuilder()
+ .withQuery(new Query.Builder().matchPhrase(new MatchPhraseQuery.Builder().field(SEARCH_FILED_FOR_LYRIC).query(keyword).build()).build())
+ .withHighlightQuery(new HighlightQuery(new Highlight(Collections.singletonList(new HighlightField(SEARCH_FILED_FOR_LYRIC, HighlightFieldParameters.builder().withFragmentSize(50).withNumberOfFragments(1).build()))), null))
.withPageable(pageable)
- .build()
- , Lyric.class
+ .build(),
+ Lyric.class
);
+
if (!search.hasSearchHits()) {
return Collections.emptyList();
}
diff --git a/nas-video/src/main/java/top/itning/yunshunas/video/controller/VideoController.java b/nas-video/src/main/java/top/itning/yunshunas/video/controller/VideoController.java
index cb4a992d..6bb4cf4a 100644
--- a/nas-video/src/main/java/top/itning/yunshunas/video/controller/VideoController.java
+++ b/nas-video/src/main/java/top/itning/yunshunas/video/controller/VideoController.java
@@ -9,8 +9,8 @@
import top.itning.yunshunas.video.service.VideoService;
import top.itning.yunshunas.video.video.VideoTransformHandler;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
diff --git a/nas-video/src/main/java/top/itning/yunshunas/video/video/VideoRepository.java b/nas-video/src/main/java/top/itning/yunshunas/video/video/VideoRepository.java
index 9d419154..9bb729b0 100644
--- a/nas-video/src/main/java/top/itning/yunshunas/video/video/VideoRepository.java
+++ b/nas-video/src/main/java/top/itning/yunshunas/video/video/VideoRepository.java
@@ -10,7 +10,7 @@
import top.itning.yunshunas.common.config.NasProperties;
import top.itning.yunshunas.video.repository.IVideoRepository;
-import javax.annotation.Nonnull;
+import jakarta.annotation.Nonnull;
import java.io.File;
/**
diff --git a/pom.xml b/pom.xml
index 6d2a28f8..1e868afe 100644
--- a/pom.xml
+++ b/pom.xml
@@ -12,7 +12,7 @@
org.springframework.boot
spring-boot-starter-parent
- 2.7.6
+ 3.0.0
top.itning.yunshu-nas
@@ -100,11 +100,6 @@
mapstruct-processor
compile
-
-
- javax.validation
- validation-api
-
org.hibernate.validator