mirror of
				https://github.com/continew-org/continew-admin.git
				synced 2025-10-31 00:57:13 +08:00 
			
		
		
		
	build: 引入 ContiNew Starter,并适配跨域自动配置
由于 ContiNew Starter 尚处于开发中,所以使用快照版本
This commit is contained in:
		| @@ -17,33 +17,13 @@ | |||||||
|     <description>公共模块(存放公共工具类,公共配置等)</description> |     <description>公共模块(存放公共工具类,公共配置等)</description> | ||||||
|  |  | ||||||
|     <dependencies> |     <dependencies> | ||||||
|  |         <!-- ContiNew Starter 核心依赖 --> | ||||||
|  |         <dependency> | ||||||
|  |             <groupId>top.charles7c.continew</groupId> | ||||||
|  |             <artifactId>continew-starter-core</artifactId> | ||||||
|  |         </dependency> | ||||||
|  |  | ||||||
|         <!-- ################ Spring Boot 相关 ################ --> |         <!-- ################ Spring Boot 相关 ################ --> | ||||||
|         <!-- Spring Boot Web(提供 Spring MVC Web 开发能力,默认内置 Tomcat 服务器) --> |  | ||||||
|         <dependency> |  | ||||||
|             <groupId>org.springframework.boot</groupId> |  | ||||||
|             <artifactId>spring-boot-starter-web</artifactId> |  | ||||||
|             <!-- 移除内置 Tomcat 服务器 --> |  | ||||||
|             <exclusions> |  | ||||||
|                 <exclusion> |  | ||||||
|                     <groupId>org.springframework.boot</groupId> |  | ||||||
|                     <artifactId>spring-boot-starter-tomcat</artifactId> |  | ||||||
|                 </exclusion> |  | ||||||
|             </exclusions> |  | ||||||
|         </dependency> |  | ||||||
|  |  | ||||||
|         <!-- Undertow 服务器(采用 Java 开发的灵活的高性能 Web 服务器,提供包括阻塞和基于 NIO 的非堵塞机制) --> |  | ||||||
|         <dependency> |  | ||||||
|             <groupId>org.springframework.boot</groupId> |  | ||||||
|             <artifactId>spring-boot-starter-undertow</artifactId> |  | ||||||
|             <!-- 移除 websocket 依赖,后续使用 websocket 可考虑由 Netty 提供。另可解决日志警告:UT026010: Buffer pool was not set on WebSocketDeploymentInfo, the default pool will be used --> |  | ||||||
|             <exclusions> |  | ||||||
|                 <exclusion> |  | ||||||
|                     <groupId>io.undertow</groupId> |  | ||||||
|                     <artifactId>undertow-websockets-jsr</artifactId> |  | ||||||
|                 </exclusion> |  | ||||||
|             </exclusions> |  | ||||||
|         </dependency> |  | ||||||
|  |  | ||||||
|         <!-- Java 邮件支持 --> |         <!-- Java 邮件支持 --> | ||||||
|         <dependency> |         <dependency> | ||||||
|             <groupId>org.springframework.boot</groupId> |             <groupId>org.springframework.boot</groupId> | ||||||
|   | |||||||
| @@ -22,20 +22,15 @@ import java.util.concurrent.TimeUnit; | |||||||
|  |  | ||||||
| import lombok.RequiredArgsConstructor; | import lombok.RequiredArgsConstructor; | ||||||
|  |  | ||||||
| import org.springframework.context.annotation.Bean; |  | ||||||
| import org.springframework.context.annotation.Configuration; | import org.springframework.context.annotation.Configuration; | ||||||
| import org.springframework.http.CacheControl; | import org.springframework.http.CacheControl; | ||||||
| import org.springframework.http.converter.ByteArrayHttpMessageConverter; | import org.springframework.http.converter.ByteArrayHttpMessageConverter; | ||||||
| import org.springframework.http.converter.HttpMessageConverter; | import org.springframework.http.converter.HttpMessageConverter; | ||||||
| import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; | import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; | ||||||
| import org.springframework.web.cors.CorsConfiguration; |  | ||||||
| import org.springframework.web.cors.UrlBasedCorsConfigurationSource; |  | ||||||
| import org.springframework.web.filter.CorsFilter; |  | ||||||
| import org.springframework.web.servlet.config.annotation.EnableWebMvc; | import org.springframework.web.servlet.config.annotation.EnableWebMvc; | ||||||
| import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; | import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; | ||||||
| import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; | import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; | ||||||
|  |  | ||||||
| import top.charles7c.cnadmin.common.config.properties.CorsProperties; |  | ||||||
| import top.charles7c.cnadmin.common.config.properties.LocalStorageProperties; | import top.charles7c.cnadmin.common.config.properties.LocalStorageProperties; | ||||||
| import top.charles7c.cnadmin.common.constant.StringConsts; | import top.charles7c.cnadmin.common.constant.StringConsts; | ||||||
|  |  | ||||||
| @@ -50,7 +45,6 @@ import top.charles7c.cnadmin.common.constant.StringConsts; | |||||||
| @RequiredArgsConstructor | @RequiredArgsConstructor | ||||||
| public class WebMvcConfiguration implements WebMvcConfigurer { | public class WebMvcConfiguration implements WebMvcConfigurer { | ||||||
|  |  | ||||||
|     private final CorsProperties corsProperties; |  | ||||||
|     private final LocalStorageProperties localStorageProperties; |     private final LocalStorageProperties localStorageProperties; | ||||||
|     private final MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter; |     private final MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter; | ||||||
|  |  | ||||||
| @@ -72,36 +66,6 @@ public class WebMvcConfiguration implements WebMvcConfigurer { | |||||||
|             .setCacheControl(CacheControl.maxAge(5, TimeUnit.HOURS).cachePublic()); |             .setCacheControl(CacheControl.maxAge(5, TimeUnit.HOURS).cachePublic()); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * 跨域配置 |  | ||||||
|      */ |  | ||||||
|     @Bean |  | ||||||
|     public CorsFilter corsFilter() { |  | ||||||
|         CorsConfiguration config = new CorsConfiguration(); |  | ||||||
|         // 设置跨域允许时间 |  | ||||||
|         config.setMaxAge(1800L); |  | ||||||
|  |  | ||||||
|         // 配置允许跨域的域名 |  | ||||||
|         if (corsProperties.getAllowedOrigins().contains(StringConsts.ASTERISK)) { |  | ||||||
|             config.addAllowedOriginPattern(StringConsts.ASTERISK); |  | ||||||
|         } else { |  | ||||||
|             // 配置为 true 后则必须配置允许跨域的域名,且不允许配置为 * |  | ||||||
|             config.setAllowCredentials(true); |  | ||||||
|             corsProperties.getAllowedOrigins().forEach(config::addAllowedOrigin); |  | ||||||
|         } |  | ||||||
|         // 配置允许跨域的请求方式 |  | ||||||
|         corsProperties.getAllowedMethods().forEach(config::addAllowedMethod); |  | ||||||
|         // 配置允许跨域的请求头 |  | ||||||
|         corsProperties.getAllowedHeaders().forEach(config::addAllowedHeader); |  | ||||||
|         // 配置允许跨域的响应头 |  | ||||||
|         corsProperties.getExposedHeaders().forEach(config::addExposedHeader); |  | ||||||
|  |  | ||||||
|         // 添加映射路径,拦截一切请求 |  | ||||||
|         UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); |  | ||||||
|         source.registerCorsConfiguration("/**", config); |  | ||||||
|         return new CorsFilter(source); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 解决 Jackson2ObjectMapperBuilderCustomizer 配置不生效的问题 |      * 解决 Jackson2ObjectMapperBuilderCustomizer 配置不生效的问题 | ||||||
|      * <p> |      * <p> | ||||||
|   | |||||||
| @@ -1,57 +0,0 @@ | |||||||
| /* |  | ||||||
|  * Copyright (c) 2022-present Charles7c Authors. All Rights Reserved. |  | ||||||
|  * |  | ||||||
|  * Licensed under the Apache License, Version 2.0 (the "License"); |  | ||||||
|  * you may not use this file except in compliance with the License. |  | ||||||
|  * You may obtain a copy of the License at |  | ||||||
|  * |  | ||||||
|  *     http://www.apache.org/licenses/LICENSE-2.0 |  | ||||||
|  * |  | ||||||
|  * Unless required by applicable law or agreed to in writing, software |  | ||||||
|  * distributed under the License is distributed on an "AS IS" BASIS, |  | ||||||
|  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |  | ||||||
|  * See the License for the specific language governing permissions and |  | ||||||
|  * limitations under the License. |  | ||||||
|  */ |  | ||||||
|  |  | ||||||
| package top.charles7c.cnadmin.common.config.properties; |  | ||||||
|  |  | ||||||
| import java.util.ArrayList; |  | ||||||
| import java.util.List; |  | ||||||
|  |  | ||||||
| import lombok.Data; |  | ||||||
|  |  | ||||||
| import org.springframework.boot.context.properties.ConfigurationProperties; |  | ||||||
| import org.springframework.stereotype.Component; |  | ||||||
|  |  | ||||||
| /** |  | ||||||
|  * 跨域配置属性 |  | ||||||
|  * |  | ||||||
|  * @author Charles7c |  | ||||||
|  * @since 2022/12/26 22:56 |  | ||||||
|  */ |  | ||||||
| @Data |  | ||||||
| @Component |  | ||||||
| @ConfigurationProperties(prefix = "cors") |  | ||||||
| public class CorsProperties { |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * 允许跨域的域名 |  | ||||||
|      */ |  | ||||||
|     private List<String> allowedOrigins = new ArrayList<>(); |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * 允许跨域的请求方式 |  | ||||||
|      */ |  | ||||||
|     private List<String> allowedMethods = new ArrayList<>(); |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * 允许跨域的请求头 |  | ||||||
|      */ |  | ||||||
|     private List<String> allowedHeaders = new ArrayList<>(); |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * 允许跨域的响应头 |  | ||||||
|      */ |  | ||||||
|     private List<String> exposedHeaders = new ArrayList<>(); |  | ||||||
| } |  | ||||||
| @@ -231,11 +231,12 @@ local-storage: | |||||||
|  |  | ||||||
| --- ### 跨域配置 | --- ### 跨域配置 | ||||||
| cors: | cors: | ||||||
|  |   enabled: true | ||||||
|   # 配置允许跨域的域名 |   # 配置允许跨域的域名 | ||||||
|   allowedOrigins: '*' |   allowed-origins: '*' | ||||||
|   # 配置允许跨域的请求方式 |   # 配置允许跨域的请求方式 | ||||||
|   allowedMethods: '*' |   allowed-methods: '*' | ||||||
|   # 配置允许跨域的请求头 |   # 配置允许跨域的请求头 | ||||||
|   allowedHeaders: '*' |   allowed-headers: '*' | ||||||
|   # 配置允许跨域的响应头 |   # 配置允许跨域的响应头 | ||||||
|   exposedHeaders: '*' |   exposed-headers: '*' | ||||||
| @@ -230,12 +230,13 @@ local-storage: | |||||||
|  |  | ||||||
| --- ### 跨域配置 | --- ### 跨域配置 | ||||||
| cors: | cors: | ||||||
|  |   enabled: true | ||||||
|   # 配置允许跨域的域名 |   # 配置允许跨域的域名 | ||||||
|   allowedOrigins: |   allowed-origins: | ||||||
|     - ${project.url} |     - ${project.url} | ||||||
|   # 配置允许跨域的请求方式 |   # 配置允许跨域的请求方式 | ||||||
|   allowedMethods: '*' |   allowed-methods: '*' | ||||||
|   # 配置允许跨域的请求头 |   # 配置允许跨域的请求头 | ||||||
|   allowedHeaders: '*' |   allowed-headers: '*' | ||||||
|   # 配置允许跨域的响应头 |   # 配置允许跨域的响应头 | ||||||
|   exposedHeaders: '*' |   exposed-headers: '*' | ||||||
|   | |||||||
							
								
								
									
										38
									
								
								pom.xml
									
									
									
									
									
								
							
							
						
						
									
										38
									
								
								pom.xml
									
									
									
									
									
								
							| @@ -3,6 +3,11 @@ | |||||||
|          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||||
|          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> |          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||||||
|     <modelVersion>4.0.0</modelVersion> |     <modelVersion>4.0.0</modelVersion> | ||||||
|  |     <parent> | ||||||
|  |         <groupId>top.charles7c.continew</groupId> | ||||||
|  |         <artifactId>continew-starter</artifactId> | ||||||
|  |         <version>1.0.0-SNAPSHOT</version> | ||||||
|  |     </parent> | ||||||
|  |  | ||||||
|     <groupId>top.charles7c.continew</groupId> |     <groupId>top.charles7c.continew</groupId> | ||||||
|     <artifactId>continew-admin</artifactId> |     <artifactId>continew-admin</artifactId> | ||||||
| @@ -21,14 +26,8 @@ | |||||||
|         <module>continew-admin-common</module> |         <module>continew-admin-common</module> | ||||||
|     </modules> |     </modules> | ||||||
|  |  | ||||||
|     <parent> |  | ||||||
|         <groupId>org.springframework.boot</groupId> |  | ||||||
|         <artifactId>spring-boot-starter-parent</artifactId> |  | ||||||
|         <version>3.1.5</version> |  | ||||||
|         <relativePath/> <!-- lookup parent from repository --> |  | ||||||
|     </parent> |  | ||||||
|  |  | ||||||
|     <properties> |     <properties> | ||||||
|  |         <revision>2.1.0-SNAPSHOT</revision> | ||||||
|         <sa-token.version>1.37.0</sa-token.version> |         <sa-token.version>1.37.0</sa-token.version> | ||||||
|  |  | ||||||
|         <!-- ### 持久层相关 ### --> |         <!-- ### 持久层相关 ### --> | ||||||
| @@ -46,10 +45,8 @@ | |||||||
|         <easy-captcha.version>1.6.2</easy-captcha.version> |         <easy-captcha.version>1.6.2</easy-captcha.version> | ||||||
|         <hutool.version>5.8.22</hutool.version> |         <hutool.version>5.8.22</hutool.version> | ||||||
|  |  | ||||||
|         <!-- ### 基础环境相关 ### --> |         <!-- Maven Plugin Versions  --> | ||||||
|         <revision>2.1.0-SNAPSHOT</revision> |  | ||||||
|         <spotless.version>2.40.0</spotless.version> |         <spotless.version>2.40.0</spotless.version> | ||||||
|         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> |  | ||||||
|     </properties> |     </properties> | ||||||
|  |  | ||||||
|     <!-- 全局依赖版本管理 --> |     <!-- 全局依赖版本管理 --> | ||||||
| @@ -211,18 +208,6 @@ | |||||||
|     </dependencyManagement> |     </dependencyManagement> | ||||||
|  |  | ||||||
|     <dependencies> |     <dependencies> | ||||||
|         <dependency> |  | ||||||
|             <groupId>org.springframework.boot</groupId> |  | ||||||
|             <artifactId>spring-boot-configuration-processor</artifactId> |  | ||||||
|             <optional>true</optional> |  | ||||||
|         </dependency> |  | ||||||
|  |  | ||||||
|         <!-- Hutool(小而全的 Java 工具类库,通过静态方法封装,降低相关 API 的学习成本,提高工作效率,使 Java 拥有函数式语言般的优雅,让 Java 语言也可以“甜甜的”) --> |  | ||||||
|         <dependency> |  | ||||||
|             <groupId>cn.hutool</groupId> |  | ||||||
|             <artifactId>hutool-all</artifactId> |  | ||||||
|         </dependency> |  | ||||||
|  |  | ||||||
|         <!-- Lombok(在 Java 开发过程中用注解的方式,简化了 JavaBean 的编写,避免了冗余和样板式代码,让编写的类更加简洁) --> |         <!-- Lombok(在 Java 开发过程中用注解的方式,简化了 JavaBean 的编写,避免了冗余和样板式代码,让编写的类更加简洁) --> | ||||||
|         <dependency> |         <dependency> | ||||||
|             <groupId>org.projectlombok</groupId> |             <groupId>org.projectlombok</groupId> | ||||||
| @@ -274,6 +259,15 @@ | |||||||
|                 <enabled>true</enabled> |                 <enabled>true</enabled> | ||||||
|             </releases> |             </releases> | ||||||
|         </repository> |         </repository> | ||||||
|  |         <repository> | ||||||
|  |             <id>sonatype-nexus-snapshots</id> | ||||||
|  |             <name>Sonatype Nexus Snapshots</name> | ||||||
|  |             <url>https://s01.oss.sonatype.org/content/repositories/snapshots/</url> | ||||||
|  |             <snapshots> | ||||||
|  |                 <updatePolicy>always</updatePolicy> | ||||||
|  |                 <enabled>true</enabled> | ||||||
|  |             </snapshots> | ||||||
|  |         </repository> | ||||||
|     </repositories> |     </repositories> | ||||||
|  |  | ||||||
|     <pluginRepositories> |     <pluginRepositories> | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user