From fe073568e1b16b36a01d8b76d26727402dd18875 Mon Sep 17 00:00:00 2001 From: LiShu <2945621619@qq.com> Date: Fri, 29 Nov 2024 16:46:36 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=98=BF=E9=87=8C=E4=BA=91?= =?UTF-8?q?=E3=80=81redis=E3=80=81SpringMVC=E3=80=81WebSocket=E9=85=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/sky/config/OssConfiguration.java | 23 ++++ .../com/sky/config/RedisConfigration.java | 23 ++++ .../com/sky/config/WebMvcConfiguration.java | 115 ++++++++++++++++++ .../sky/config/WebSocketConfiguration.java | 18 +++ 4 files changed, 179 insertions(+) create mode 100644 sky-server/src/main/java/com/sky/config/OssConfiguration.java create mode 100644 sky-server/src/main/java/com/sky/config/RedisConfigration.java create mode 100644 sky-server/src/main/java/com/sky/config/WebMvcConfiguration.java create mode 100644 sky-server/src/main/java/com/sky/config/WebSocketConfiguration.java diff --git a/sky-server/src/main/java/com/sky/config/OssConfiguration.java b/sky-server/src/main/java/com/sky/config/OssConfiguration.java new file mode 100644 index 0000000..376276f --- /dev/null +++ b/sky-server/src/main/java/com/sky/config/OssConfiguration.java @@ -0,0 +1,23 @@ +package com.sky.config; + +import com.sky.properties.AliOssProperties; +import com.sky.utils.AliOssUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +@Slf4j +public class OssConfiguration { + @Bean + @ConditionalOnMissingBean + public AliOssUtil aliOssUtil(AliOssProperties aliOssProperties){ + log.info("开始创建阿里云上传文件工具类对象:{}",aliOssProperties); + return new AliOssUtil(aliOssProperties.getEndpoint(), + aliOssProperties.getAccessKeyId(), + aliOssProperties.getAccessKeySecret(), + aliOssProperties.getBucketName()); + } + +} diff --git a/sky-server/src/main/java/com/sky/config/RedisConfigration.java b/sky-server/src/main/java/com/sky/config/RedisConfigration.java new file mode 100644 index 0000000..94e9b18 --- /dev/null +++ b/sky-server/src/main/java/com/sky/config/RedisConfigration.java @@ -0,0 +1,23 @@ +package com.sky.config; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.serializer.StringRedisSerializer; + +@Configuration +@Slf4j +public class RedisConfigration { + @Bean + public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){ + log.info("开始创建redis末模板对象..."); + RedisTemplate redisTemplate = new RedisTemplate(); + //设置redis的连接工厂对象 + redisTemplate.setConnectionFactory(redisConnectionFactory); + //设置redis key的序列化器 + redisTemplate.setKeySerializer(new StringRedisSerializer()); + return redisTemplate; + } +} diff --git a/sky-server/src/main/java/com/sky/config/WebMvcConfiguration.java b/sky-server/src/main/java/com/sky/config/WebMvcConfiguration.java new file mode 100644 index 0000000..c60128e --- /dev/null +++ b/sky-server/src/main/java/com/sky/config/WebMvcConfiguration.java @@ -0,0 +1,115 @@ +package com.sky.config; + + +import com.sky.inteceptor.JwtTokenAdminInterceptor; +import com.sky.inteceptor.JwtTokenUserInterceptor; +import com.sky.json.JacksonObjectMapper; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.converter.HttpMessageConverter; +import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport; +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.service.ApiInfo; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; + +import java.util.List; + +/** + * 配置类,注册web层相关组件 + */ +@Configuration +@Slf4j +public class WebMvcConfiguration extends WebMvcConfigurationSupport { + + @Autowired + private JwtTokenAdminInterceptor jwtTokenAdminInterceptor; + @Autowired + private JwtTokenUserInterceptor jwtTokenUserInterceptor; + /** + * 注册自定义拦截器 + * + * @param registry + */ + protected void addInterceptors(InterceptorRegistry registry) { + log.info("开始注册自定义拦截器..."); + registry.addInterceptor(jwtTokenAdminInterceptor) + .addPathPatterns("/admin/**") + .excludePathPatterns("/admin/employee/login"); + registry.addInterceptor(jwtTokenUserInterceptor) + .addPathPatterns("/user/**") + .excludePathPatterns("/user/user/login") + .excludePathPatterns("/user/shop/status"); + } + + /** + * 通过knife4j生成接口文档 + * @return + */ + @Bean + public Docket docket1() { + log.info("准备生成接口文档.."); + ApiInfo apiInfo = new ApiInfoBuilder() + .title("苍穹外卖项目接口文档") + .version("2.0") + .description("苍穹外卖项目接口文档") + .build(); + Docket docket = new Docket(DocumentationType.SWAGGER_2) + .groupName("管理端接口") + .apiInfo(apiInfo) + .select() + .apis(RequestHandlerSelectors.basePackage("com.sky.controller.admin")) + .paths(PathSelectors.any()) + .build(); + return docket; + } + + @Bean + public Docket docket2() { + log.info("准备生成接口文档.."); + ApiInfo apiInfo = new ApiInfoBuilder() + .title("苍穹外卖项目接口文档") + .version("2.0") + .description("苍穹外卖项目接口文档") + .build(); + Docket docket = new Docket(DocumentationType.SWAGGER_2) + .groupName("用户端接口") + .apiInfo(apiInfo) + .select() + .apis(RequestHandlerSelectors.basePackage("com.sky.controller.user")) + .paths(PathSelectors.any()) + .build(); + return docket; + } + /** + * 设置静态资源映射 + * @param registry + */ + protected void addResourceHandlers(ResourceHandlerRegistry registry) { + log.info("开始设置静态资源映射.."); + registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/"); + registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/"); + } + + /* + * 拓展spring MVC框架的消息转换器 + * + * */ + @Override + protected void extendMessageConverters(List> converters) { + log.info("拓展消息转化器"); + //创建一个消息转换器对象 + MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(); + //需要为消息转换器设置一个对象转换器,对象转换器将java对象序列化为json数据 + converter.setObjectMapper(new JacksonObjectMapper()); + //将自己的消息转换器加入容器中 + converters.add(0,converter); + } +} diff --git a/sky-server/src/main/java/com/sky/config/WebSocketConfiguration.java b/sky-server/src/main/java/com/sky/config/WebSocketConfiguration.java new file mode 100644 index 0000000..a46c2cb --- /dev/null +++ b/sky-server/src/main/java/com/sky/config/WebSocketConfiguration.java @@ -0,0 +1,18 @@ +package com.sky.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.socket.server.standard.ServerEndpointExporter; + +/** + * WebSocket配置类,用于注册WebSocket的Bean + */ +@Configuration +public class WebSocketConfiguration { + + @Bean + public ServerEndpointExporter serverEndpointExporter() { + return new ServerEndpointExporter(); + } + +}