- 新建 mall-spring-boot 项目,用于提供通用组件的自动配置

- 封装 AdminMVCConfiguration 和 UserConfiguration 组件
This commit is contained in:
YunaiV
2019-05-10 01:11:25 +08:00
parent ddf2f0ea1f
commit 3ff9f1b326
19 changed files with 180 additions and 170 deletions

View File

@@ -0,0 +1,17 @@
package cn.iocoder.mall.spring.boot.constant;
/**
* 全局请求路径枚举类,用于定义不同用户类型的根请求路径
*/
public interface RootRequestPath {
/**
* 管理员
*/
String ADMIN = "/admins";
/**
* 用户
*/
String USER = "/users";
}

View File

@@ -0,0 +1,49 @@
package cn.iocoder.mall.spring.boot.web;
import cn.iocoder.mall.admin.sdk.interceptor.AdminAccessLogInterceptor;
import cn.iocoder.mall.admin.sdk.interceptor.AdminSecurityInterceptor;
import cn.iocoder.mall.spring.boot.constant.RootRequestPath;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.DispatcherServlet;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET) // TODO 芋艿,未来可能考虑 REACTIVE
@ConditionalOnClass({DispatcherServlet.class, WebMvcConfigurer.class, // 有 Spring MVC 容器
AdminSecurityInterceptor.class, AdminAccessLogInterceptor.class}) // 有引入 system-sdk
public class AdminMVCConfiguration implements WebMvcConfigurer {
@Bean
@ConditionalOnMissingBean(AdminSecurityInterceptor.class)
public AdminSecurityInterceptor adminSecurityInterceptor() {
return new AdminSecurityInterceptor();
}
@Bean
@ConditionalOnMissingBean(AdminAccessLogInterceptor.class)
public AdminAccessLogInterceptor adminAccessLogInterceptor() {
return new AdminAccessLogInterceptor();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(adminAccessLogInterceptor()).addPathPatterns(RootRequestPath.ADMIN + "/**");
registry.addInterceptor(adminSecurityInterceptor()).addPathPatterns(RootRequestPath.ADMIN + "/**");
}
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping(RootRequestPath.USER + "/**")
.allowedOrigins("*")
.allowedMethods("*")
.allowedHeaders("*")
.allowCredentials(true).maxAge(1800);
}
}

View File

@@ -0,0 +1,49 @@
package cn.iocoder.mall.spring.boot.web;
import cn.iocoder.mall.spring.boot.constant.RootRequestPath;
import cn.iocoder.mall.user.sdk.interceptor.UserAccessLogInterceptor;
import cn.iocoder.mall.user.sdk.interceptor.UserSecurityInterceptor;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.DispatcherServlet;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET) // TODO 芋艿,未来可能考虑 REACTIVE
@ConditionalOnClass({DispatcherServlet.class, WebMvcConfigurer.class, // 有 Spring MVC 容器
UserSecurityInterceptor.class, UserAccessLogInterceptor.class}) // 有引入 system-sdk
public class UserMVCConfiguration implements WebMvcConfigurer {
@Bean
@ConditionalOnMissingBean(UserAccessLogInterceptor.class)
public UserAccessLogInterceptor userAccessLogInterceptor() {
return new UserAccessLogInterceptor();
}
@Bean
@ConditionalOnMissingBean(UserSecurityInterceptor.class)
public UserSecurityInterceptor userSecurityInterceptor() {
return new UserSecurityInterceptor();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(userAccessLogInterceptor()).addPathPatterns(RootRequestPath.USER + "/**");
registry.addInterceptor(userSecurityInterceptor()).addPathPatterns(RootRequestPath.USER + "/**");
}
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping(RootRequestPath.USER + "/**")
.allowedOrigins("*")
.allowedMethods("*")
.allowedHeaders("*")
.allowCredentials(true).maxAge(1800);
}
}

View File

@@ -0,0 +1,3 @@
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
cn.iocoder.mall.spring.boot.web.AdminMVCConfiguration, \
cn.iocoder.mall.spring.boot.web.UserMVCConfiguration