Skip to content

Commit 31b94c2

Browse files
author
smallchill
committed
🎉 4.0.0.RELEASE 升级 SpringBoot3 SpringCloud2023 JDK17
1 parent 15359e5 commit 31b94c2

File tree

155 files changed

+1073
-1203
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

155 files changed

+1073
-1203
lines changed

README.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
<p align="center">
2-
<img src="https://img.shields.io/badge/Release-V3.7.1-green.svg" alt="Downloads">
3-
<img src="https://img.shields.io/badge/JDK-1.8+-green.svg" alt="Build Status">
2+
<img src="https://img.shields.io/badge/Release-V4.0.0-green.svg" alt="Downloads">
3+
<img src="https://img.shields.io/badge/JDK-17+-green.svg" alt="Build Status">
44
<img src="https://img.shields.io/badge/license-Apache%202-blue.svg" alt="Build Status">
5-
<img src="https://img.shields.io/badge/Spring%20Cloud-2021-blue.svg" alt="Coverage Status">
6-
<img src="https://img.shields.io/badge/Spring%20Boot-2.7.18-blue.svg" alt="Downloads">
5+
<img src="https://img.shields.io/badge/Spring%20Cloud-2023-blue.svg" alt="Coverage Status">
6+
<img src="https://img.shields.io/badge/Spring%20Boot-3.2-blue.svg" alt="Downloads">
77
<a target="_blank" href="https://bladex.cn">
88
<img src="https://img.shields.io/badge/Author-Small%20Chill-ff69b4.svg" alt="Downloads">
99
</a>

blade-auth/Dockerfile

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
FROM anapsix/alpine-java:8_server-jre_unlimited
1+
FROM bladex/alpine-java:openjdk17_cn_slim
22

3-
MAINTAINER smallchill@163.com
3+
MAINTAINER bladejava@qq.com
44

55
RUN mkdir -p /blade/auth
66

@@ -10,6 +10,6 @@ EXPOSE 8010
1010

1111
ADD ./target/blade-auth.jar ./app.jar
1212

13-
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "app.jar"]
13+
ENTRYPOINT ["java", "--add-opens java.base/java.lang.reflect=ALL-UNNAMED", "-Djava.security.egd=file:/dev/./urandom", "-jar", "app.jar"]
1414

1515
CMD ["--spring.profiles.active=test"]

blade-auth/pom.xml

+3-20
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<parent>
99
<artifactId>SpringBlade</artifactId>
1010
<groupId>org.springblade</groupId>
11-
<version>3.7.1</version>
11+
<version>4.0.0</version>
1212
</parent>
1313

1414
<artifactId>blade-auth</artifactId>
@@ -61,9 +61,8 @@
6161
</dependency>
6262
<!-- MySQL -->
6363
<dependency>
64-
<groupId>mysql</groupId>
65-
<artifactId>mysql-connector-java</artifactId>
66-
<version>${mysql.connector.version}</version>
64+
<groupId>com.mysql</groupId>
65+
<artifactId>mysql-connector-j</artifactId>
6766
<scope>runtime</scope>
6867
</dependency>
6968
</dependencies>
@@ -93,22 +92,6 @@
9392
<plugin>
9493
<groupId>org.apache.maven.plugins</groupId>
9594
<artifactId>maven-antrun-plugin</artifactId>
96-
<executions>
97-
<execution>
98-
<phase>package</phase>
99-
<goals>
100-
<goal>run</goal>
101-
</goals>
102-
<configuration>
103-
<tasks>
104-
<!--suppress UnresolvedMavenProperty -->
105-
<copy overwrite="true"
106-
tofile="${session.executionRootDirectory}/target/${artifactId}.jar"
107-
file="${project.build.directory}/${artifactId}.jar" />
108-
</tasks>
109-
</configuration>
110-
</execution>
111-
</executions>
11295
</plugin>
11396
</plugins>
11497
</build>

blade-auth/src/main/java/org/springblade/auth/controller/AuthController.java

+11-11
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@
1616
package org.springblade.auth.controller;
1717

1818
import com.wf.captcha.SpecCaptcha;
19-
import io.swagger.annotations.Api;
20-
import io.swagger.annotations.ApiOperation;
21-
import io.swagger.annotations.ApiParam;
19+
import io.swagger.v3.oas.annotations.tags.Tag;
20+
import io.swagger.v3.oas.annotations.Operation;
21+
import io.swagger.v3.oas.annotations.Parameter;
2222
import lombok.AllArgsConstructor;
2323
import org.springblade.auth.granter.ITokenGranter;
2424
import org.springblade.auth.granter.TokenGranterBuilder;
@@ -47,18 +47,18 @@
4747
*/
4848
@RestController
4949
@AllArgsConstructor
50-
@Api(value = "用户授权认证", tags = "授权接口")
50+
@Tag(name = "用户授权认证", description = "授权接口")
5151
public class AuthController {
5252

5353
private RedisUtil redisUtil;
5454

5555
@PostMapping("token")
56-
@ApiOperation(value = "获取认证token", notes = "传入租户ID:tenantId,账号:account,密码:password")
57-
public R<AuthInfo> token(@ApiParam(value = "授权类型", required = true) @RequestParam(defaultValue = "password", required = false) String grantType,
58-
@ApiParam(value = "刷新令牌") @RequestParam(required = false) String refreshToken,
59-
@ApiParam(value = "租户ID", required = true) @RequestParam(defaultValue = "000000", required = false) String tenantId,
60-
@ApiParam(value = "账号") @RequestParam(required = false) String account,
61-
@ApiParam(value = "密码") @RequestParam(required = false) String password) {
56+
@Operation(summary = "获取认证token", description = "传入租户ID:tenantId,账号:account,密码:password")
57+
public R<AuthInfo> token(@Parameter(name = "授权类型", required = true) @RequestParam(defaultValue = "password", required = false) String grantType,
58+
@Parameter(name = "刷新令牌") @RequestParam(required = false) String refreshToken,
59+
@Parameter(name = "租户ID", required = true) @RequestParam(defaultValue = "000000", required = false) String tenantId,
60+
@Parameter(name = "账号") @RequestParam(required = false) String account,
61+
@Parameter(name = "密码") @RequestParam(required = false) String password) {
6262

6363
String userType = Func.toStr(WebUtil.getRequest().getHeader(TokenUtil.USER_TYPE_HEADER_KEY), TokenUtil.DEFAULT_USER_TYPE);
6464

@@ -81,7 +81,7 @@ public R<AuthInfo> token(@ApiParam(value = "授权类型", required = true) @Req
8181
}
8282

8383
@GetMapping("/captcha")
84-
@ApiOperation(value = "获取验证码")
84+
@Operation(summary = "获取验证码")
8585
public R<Kv> captcha() {
8686
SpecCaptcha specCaptcha = new SpecCaptcha(130, 48, 5);
8787
String verCode = specCaptcha.text().toLowerCase();

blade-auth/src/main/java/org/springblade/auth/controller/SocialController.java

+8-8
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
*/
1616
package org.springblade.auth.controller;
1717

18-
import io.swagger.annotations.Api;
19-
import io.swagger.annotations.ApiOperation;
18+
import io.swagger.v3.oas.annotations.tags.Tag;
19+
import io.swagger.v3.oas.annotations.Operation;
2020
import lombok.AllArgsConstructor;
2121
import lombok.extern.slf4j.Slf4j;
2222
import me.zhyd.oauth.model.AuthCallback;
@@ -30,7 +30,7 @@
3030
import org.springframework.web.bind.annotation.RequestMapping;
3131
import org.springframework.web.bind.annotation.RestController;
3232

33-
import javax.servlet.http.HttpServletResponse;
33+
import jakarta.servlet.http.HttpServletResponse;
3434
import java.io.IOException;
3535

3636
/**
@@ -42,15 +42,15 @@
4242
@RestController
4343
@AllArgsConstructor
4444
@ConditionalOnProperty(value = "social.enabled", havingValue = "true")
45-
@Api(value = "第三方登陆", tags = "第三方登陆端点")
45+
@Tag(name = "第三方登陆", description = "第三方登陆端点")
4646
public class SocialController {
4747

4848
private final SocialProperties socialProperties;
4949

5050
/**
5151
* 授权完毕跳转
5252
*/
53-
@ApiOperation(value = "授权完毕跳转")
53+
@Operation(summary = "授权完毕跳转")
5454
@RequestMapping("/oauth/render/{source}")
5555
public void renderAuth(@PathVariable("source") String source, HttpServletResponse response) throws IOException {
5656
AuthRequest authRequest = SocialUtil.getAuthRequest(source, socialProperties);
@@ -61,7 +61,7 @@ public void renderAuth(@PathVariable("source") String source, HttpServletRespons
6161
/**
6262
* 获取认证信息
6363
*/
64-
@ApiOperation(value = "获取认证信息")
64+
@Operation(summary = "获取认证信息")
6565
@RequestMapping("/oauth/callback/{source}")
6666
public Object login(@PathVariable("source") String source, AuthCallback callback) {
6767
AuthRequest authRequest = SocialUtil.getAuthRequest(source, socialProperties);
@@ -71,7 +71,7 @@ public Object login(@PathVariable("source") String source, AuthCallback callback
7171
/**
7272
* 撤销授权
7373
*/
74-
@ApiOperation(value = "撤销授权")
74+
@Operation(summary = "撤销授权")
7575
@RequestMapping("/oauth/revoke/{source}/{token}")
7676
public Object revokeAuth(@PathVariable("source") String source, @PathVariable("token") String token) {
7777
AuthRequest authRequest = SocialUtil.getAuthRequest(source, socialProperties);
@@ -81,7 +81,7 @@ public Object revokeAuth(@PathVariable("source") String source, @PathVariable("t
8181
/**
8282
* 续期accessToken
8383
*/
84-
@ApiOperation(value = "续期令牌")
84+
@Operation(summary = "续期令牌")
8585
@RequestMapping("/oauth/refresh/{source}")
8686
public Object refreshAuth(@PathVariable("source") String source, String token) {
8787
AuthRequest authRequest = SocialUtil.getAuthRequest(source, socialProperties);

blade-auth/src/main/java/org/springblade/auth/granter/CaptchaTokenGranter.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
import org.springblade.system.user.feign.IUserClient;
2727
import org.springframework.stereotype.Component;
2828

29-
import javax.servlet.http.HttpServletRequest;
29+
import jakarta.servlet.http.HttpServletRequest;
3030

3131
/**
3232
* 验证码TokenGranter

blade-auth/src/main/java/org/springblade/auth/granter/SocialTokenGranter.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
import org.springblade.system.user.feign.IUserClient;
3434
import org.springframework.stereotype.Component;
3535

36-
import javax.servlet.http.HttpServletRequest;
36+
import jakarta.servlet.http.HttpServletRequest;
3737
import java.util.Objects;
3838

3939
/**
@@ -79,7 +79,7 @@ public UserInfo grant(TokenParameter tokenParameter) {
7979
}
8080

8181
// 组装数据
82-
UserOauth userOauth = Objects.requireNonNull(BeanUtil.copy(authUser, UserOauth.class));
82+
UserOauth userOauth = Objects.requireNonNull(BeanUtil.copyProperties(authUser, UserOauth.class));
8383
userOauth.setSource(authUser.getSource());
8484
userOauth.setTenantId(tenantId);
8585
userOauth.setUuid(authUser.getUuid());

blade-common/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<artifactId>SpringBlade</artifactId>
77
<groupId>org.springblade</groupId>
8-
<version>3.7.1</version>
8+
<version>4.0.0</version>
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>
1111

blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java

+10
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,16 @@
99
*/
1010
public interface LauncherConstant {
1111

12+
/**
13+
* nacos 用户名
14+
*/
15+
String NACOS_USERNAME = "nacos";
16+
17+
/**
18+
* nacos 密码
19+
*/
20+
String NACOS_PASSWORD = "nacos";
21+
1222
/**
1323
* nacos namespace id
1424
*/

blade-common/src/main/java/org/springblade/common/launch/LauncherServiceImpl.java

+2
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ public class LauncherServiceImpl implements LauncherService {
3232
@Override
3333
public void launcher(SpringApplicationBuilder builder, String appName, String profile) {
3434
Properties props = System.getProperties();
35+
PropsUtil.setProperty(props, "spring.cloud.nacos.username", LauncherConstant.NACOS_USERNAME);
36+
PropsUtil.setProperty(props, "spring.cloud.nacos.password", LauncherConstant.NACOS_PASSWORD);
3537
PropsUtil.setProperty(props, "spring.cloud.nacos.discovery.server-addr", LauncherConstant.nacosAddr(profile));
3638
PropsUtil.setProperty(props, "spring.cloud.nacos.config.server-addr", LauncherConstant.nacosAddr(profile));
3739
PropsUtil.setProperty(props, "spring.cloud.sentinel.transport.dashboard", LauncherConstant.sentinelAddr(profile));

blade-gateway/Dockerfile

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
FROM anapsix/alpine-java:8_server-jre_unlimited
1+
FROM bladex/alpine-java:openjdk17_cn_slim
22

3-
MAINTAINER smallchill@163.com
3+
MAINTAINER bladejava@qq.com
44

55
RUN mkdir -p /blade/gateway
66

@@ -10,6 +10,6 @@ EXPOSE 80
1010

1111
ADD ./target/blade-gateway.jar ./app.jar
1212

13-
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "app.jar"]
13+
ENTRYPOINT ["java", "--add-opens java.base/java.lang.reflect=ALL-UNNAMED", "-Djava.security.egd=file:/dev/./urandom", "-jar", "app.jar"]
1414

1515
CMD ["--spring.profiles.active=test"]

blade-gateway/pom.xml

+6-17
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<artifactId>SpringBlade</artifactId>
77
<groupId>org.springblade</groupId>
8-
<version>3.7.1</version>
8+
<version>4.0.0</version>
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>
1111

@@ -69,6 +69,11 @@
6969
<groupId>com.alibaba.cloud</groupId>
7070
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
7171
</dependency>
72+
<!-- 开启knife4j -->
73+
<dependency>
74+
<groupId>com.github.xiaoymin</groupId>
75+
<artifactId>knife4j-gateway-spring-boot-starter</artifactId>
76+
</dependency>
7277
<!-- JWT -->
7378
<dependency>
7479
<groupId>io.jsonwebtoken</groupId>
@@ -107,22 +112,6 @@
107112
<plugin>
108113
<groupId>org.apache.maven.plugins</groupId>
109114
<artifactId>maven-antrun-plugin</artifactId>
110-
<executions>
111-
<execution>
112-
<phase>package</phase>
113-
<goals>
114-
<goal>run</goal>
115-
</goals>
116-
<configuration>
117-
<tasks>
118-
<!--suppress UnresolvedMavenProperty -->
119-
<copy overwrite="true"
120-
tofile="${session.executionRootDirectory}/target/${artifactId}.jar"
121-
file="${project.build.directory}/${artifactId}.jar" />
122-
</tasks>
123-
</configuration>
124-
</execution>
125-
</executions>
126115
</plugin>
127116
</plugins>
128117
</build>

blade-gateway/src/main/java/org/springblade/gateway/handler/ErrorExceptionHandler.java

+15-15
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,15 @@
2424
import org.springframework.context.annotation.Configuration;
2525
import org.springframework.core.annotation.Order;
2626
import org.springframework.core.io.buffer.DataBufferFactory;
27-
import org.springframework.http.HttpStatus;
2827
import org.springframework.http.MediaType;
2928
import org.springframework.http.server.reactive.ServerHttpRequest;
3029
import org.springframework.http.server.reactive.ServerHttpResponse;
31-
import org.springframework.lang.NonNull;
3230
import org.springframework.web.server.ResponseStatusException;
3331
import org.springframework.web.server.ServerWebExchange;
3432
import reactor.core.publisher.Mono;
3533

34+
import java.util.Map;
35+
3636
/**
3737
* 异常处理
3838
*
@@ -45,43 +45,42 @@ public class ErrorExceptionHandler implements ErrorWebExceptionHandler {
4545

4646
private final ObjectMapper objectMapper;
4747

48-
@NonNull
4948
@Override
50-
public Mono<Void> handle(ServerWebExchange exchange, @NonNull Throwable ex) {
49+
public Mono<Void> handle(ServerWebExchange exchange, Throwable ex) {
5150
ServerHttpRequest request = exchange.getRequest();
5251
ServerHttpResponse response = exchange.getResponse();
52+
5353
if (response.isCommitted()) {
5454
return Mono.error(ex);
5555
}
56+
5657
response.getHeaders().setContentType(MediaType.APPLICATION_JSON);
5758
if (ex instanceof ResponseStatusException) {
58-
response.setStatusCode(((ResponseStatusException) ex).getStatus());
59+
response.setStatusCode(((ResponseStatusException) ex).getStatusCode());
5960
}
61+
6062
return response.writeWith(Mono.fromSupplier(() -> {
6163
DataBufferFactory bufferFactory = response.bufferFactory();
6264
try {
63-
HttpStatus status = HttpStatus.BAD_GATEWAY;
64-
if (ex instanceof ResponseStatusException) {
65-
status = ((ResponseStatusException) ex).getStatus();
65+
int status = 500;
66+
if (response.getStatusCode() != null) {
67+
status = response.getStatusCode().value();
6668
}
67-
return bufferFactory.wrap(objectMapper.writeValueAsBytes(ResponseProvider.response(status.value(), buildMessage(request, ex))));
69+
Map<String, Object> result = ResponseProvider.response(status, this.buildMessage(request, ex));
70+
return bufferFactory.wrap(objectMapper.writeValueAsBytes(result));
6871
} catch (JsonProcessingException e) {
69-
e.printStackTrace();
7072
return bufferFactory.wrap(new byte[0]);
7173
}
7274
}));
7375
}
7476

77+
7578
/**
7679
* 构建异常信息
7780
*/
7881
private String buildMessage(ServerHttpRequest request, Throwable ex) {
79-
String uri = request.getURI().toString();
80-
if (uri.endsWith("doc.html")) {
81-
return "[Swagger聚合网关] 已迁移至 [blade-swagger] 服务,请开启 [blade-swagger] 服务并访问 [http://127.0.0.1:18000/doc.html]";
82-
}
8382
StringBuilder message = new StringBuilder("Failed to handle request [");
84-
message.append(request.getMethodValue());
83+
message.append(request.getMethod().name());
8584
message.append(" ");
8685
message.append(request.getURI());
8786
message.append("]");
@@ -92,4 +91,5 @@ private String buildMessage(ServerHttpRequest request, Throwable ex) {
9291
return message.toString();
9392
}
9493

94+
9595
}

blade-gateway/src/main/java/org/springblade/gateway/provider/AuthProvider.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public class AuthProvider {
3535
DEFAULT_SKIP_URL.add("/token/**");
3636
DEFAULT_SKIP_URL.add("/captcha/**");
3737
DEFAULT_SKIP_URL.add("/actuator/health/**");
38-
DEFAULT_SKIP_URL.add("/v2/api-docs/**");
38+
DEFAULT_SKIP_URL.add("/v3/api-docs/**");
3939
DEFAULT_SKIP_URL.add("/auth/**");
4040
DEFAULT_SKIP_URL.add("/oauth/**");
4141
DEFAULT_SKIP_URL.add("/log/**");

0 commit comments

Comments
 (0)