mirror of
				https://github.com/continew-org/continew-admin.git
				synced 2025-10-31 10:57:13 +08:00 
			
		
		
		
	build: 引入 ContiNew Starter,并适配跨域自动配置
由于 ContiNew Starter 尚处于开发中,所以使用快照版本
This commit is contained in:
		| @@ -17,33 +17,13 @@ | ||||
|     <description>公共模块(存放公共工具类,公共配置等)</description> | ||||
|  | ||||
|     <dependencies> | ||||
|         <!-- ContiNew Starter 核心依赖 --> | ||||
|         <dependency> | ||||
|             <groupId>top.charles7c.continew</groupId> | ||||
|             <artifactId>continew-starter-core</artifactId> | ||||
|         </dependency> | ||||
|  | ||||
|         <!-- ################ 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 邮件支持 --> | ||||
|         <dependency> | ||||
|             <groupId>org.springframework.boot</groupId> | ||||
|   | ||||
| @@ -22,20 +22,15 @@ import java.util.concurrent.TimeUnit; | ||||
|  | ||||
| import lombok.RequiredArgsConstructor; | ||||
|  | ||||
| import org.springframework.context.annotation.Bean; | ||||
| import org.springframework.context.annotation.Configuration; | ||||
| import org.springframework.http.CacheControl; | ||||
| import org.springframework.http.converter.ByteArrayHttpMessageConverter; | ||||
| import org.springframework.http.converter.HttpMessageConverter; | ||||
| 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.ResourceHandlerRegistry; | ||||
| 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.constant.StringConsts; | ||||
|  | ||||
| @@ -50,7 +45,6 @@ import top.charles7c.cnadmin.common.constant.StringConsts; | ||||
| @RequiredArgsConstructor | ||||
| public class WebMvcConfiguration implements WebMvcConfigurer { | ||||
|  | ||||
|     private final CorsProperties corsProperties; | ||||
|     private final LocalStorageProperties localStorageProperties; | ||||
|     private final MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter; | ||||
|  | ||||
| @@ -72,36 +66,6 @@ public class WebMvcConfiguration implements WebMvcConfigurer { | ||||
|             .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 配置不生效的问题 | ||||
|      * <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: | ||||
|   enabled: true | ||||
|   # 配置允许跨域的域名 | ||||
|   allowedOrigins: '*' | ||||
|   allowed-origins: '*' | ||||
|   # 配置允许跨域的请求方式 | ||||
|   allowedMethods: '*' | ||||
|   allowed-methods: '*' | ||||
|   # 配置允许跨域的请求头 | ||||
|   allowedHeaders: '*' | ||||
|   allowed-headers: '*' | ||||
|   # 配置允许跨域的响应头 | ||||
|   exposedHeaders: '*' | ||||
|   exposed-headers: '*' | ||||
| @@ -230,12 +230,13 @@ local-storage: | ||||
|  | ||||
| --- ### 跨域配置 | ||||
| cors: | ||||
|   enabled: true | ||||
|   # 配置允许跨域的域名 | ||||
|   allowedOrigins: | ||||
|   allowed-origins: | ||||
|     - ${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" | ||||
|          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||||
|     <modelVersion>4.0.0</modelVersion> | ||||
|     <parent> | ||||
|         <groupId>top.charles7c.continew</groupId> | ||||
|         <artifactId>continew-starter</artifactId> | ||||
|         <version>1.0.0-SNAPSHOT</version> | ||||
|     </parent> | ||||
|  | ||||
|     <groupId>top.charles7c.continew</groupId> | ||||
|     <artifactId>continew-admin</artifactId> | ||||
| @@ -21,14 +26,8 @@ | ||||
|         <module>continew-admin-common</module> | ||||
|     </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> | ||||
|         <revision>2.1.0-SNAPSHOT</revision> | ||||
|         <sa-token.version>1.37.0</sa-token.version> | ||||
|  | ||||
|         <!-- ### 持久层相关 ### --> | ||||
| @@ -46,10 +45,8 @@ | ||||
|         <easy-captcha.version>1.6.2</easy-captcha.version> | ||||
|         <hutool.version>5.8.22</hutool.version> | ||||
|  | ||||
|         <!-- ### 基础环境相关 ### --> | ||||
|         <revision>2.1.0-SNAPSHOT</revision> | ||||
|         <!-- Maven Plugin Versions  --> | ||||
|         <spotless.version>2.40.0</spotless.version> | ||||
|         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | ||||
|     </properties> | ||||
|  | ||||
|     <!-- 全局依赖版本管理 --> | ||||
| @@ -211,18 +208,6 @@ | ||||
|     </dependencyManagement> | ||||
|  | ||||
|     <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 的编写,避免了冗余和样板式代码,让编写的类更加简洁) --> | ||||
|         <dependency> | ||||
|             <groupId>org.projectlombok</groupId> | ||||
| @@ -274,6 +259,15 @@ | ||||
|                 <enabled>true</enabled> | ||||
|             </releases> | ||||
|         </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> | ||||
|  | ||||
|     <pluginRepositories> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user