| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- package com.kxs.common.excel;
- import com.kxs.common.excel.aop.DynamicNameAspect;
- import com.kxs.common.excel.aop.RequestExcelArgumentResolver;
- import com.kxs.common.excel.aop.ResponseExcelReturnValueHandler;
- import com.kxs.common.excel.config.ExcelConfigProperties;
- import com.kxs.common.excel.config.FileProperties;
- import com.kxs.common.excel.processor.NameProcessor;
- import com.kxs.common.excel.processor.NameSpelExpressionProcessor;
- import jakarta.annotation.PostConstruct;
- import lombok.RequiredArgsConstructor;
- import org.springframework.boot.autoconfigure.AutoConfiguration;
- import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
- import org.springframework.boot.context.properties.EnableConfigurationProperties;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Import;
- import org.springframework.web.method.support.HandlerMethodArgumentResolver;
- import org.springframework.web.method.support.HandlerMethodReturnValueHandler;
- import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter;
- import java.util.ArrayList;
- import java.util.List;
- /**
- * @author 没秃顶的码农
- * @date 2024/07/24
- * <p>
- * 配置初始化
- */
- @AutoConfiguration
- @RequiredArgsConstructor
- @Import({ExcelHandlerConfiguration.class})
- @EnableConfigurationProperties({ExcelConfigProperties.class, FileProperties.class})
- public class ResponseExcelAutoConfiguration {
- private final RequestMappingHandlerAdapter requestMappingHandlerAdapter;
- private final ResponseExcelReturnValueHandler responseExcelReturnValueHandler;
- /**
- * SPEL 解析处理器
- * @return NameProcessor excel名称解析器
- */
- @Bean("ExcelNameProcessor")
- @ConditionalOnMissingBean
- public NameProcessor nameProcessor() {
- return new NameSpelExpressionProcessor();
- }
- /**
- * Excel名称解析处理切面
- * @param nameProcessor SPEL 解析处理器
- * @return DynamicNameAspect
- */
- @Bean("ExcelDynamicNameAspect")
- @ConditionalOnMissingBean
- public DynamicNameAspect dynamicNameAspect(NameProcessor nameProcessor) {
- return new DynamicNameAspect(nameProcessor);
- }
- /**
- * 追加 Excel返回值处理器 到 springmvc 中
- */
- @PostConstruct
- public void setReturnValueHandlers() {
- List<HandlerMethodReturnValueHandler> returnValueHandlers = requestMappingHandlerAdapter
- .getReturnValueHandlers();
- List<HandlerMethodReturnValueHandler> newHandlers = new ArrayList<>();
- newHandlers.add(responseExcelReturnValueHandler);
- assert returnValueHandlers != null;
- newHandlers.addAll(returnValueHandlers);
- requestMappingHandlerAdapter.setReturnValueHandlers(newHandlers);
- }
- /**
- * 追加 Excel 请求处理器 到 springmvc 中
- */
- @PostConstruct
- public void setRequestExcelArgumentResolver() {
- List<HandlerMethodArgumentResolver> argumentResolvers = requestMappingHandlerAdapter.getArgumentResolvers();
- List<HandlerMethodArgumentResolver> resolverList = new ArrayList<>();
- resolverList.add(new RequestExcelArgumentResolver());
- resolverList.addAll(argumentResolvers);
- requestMappingHandlerAdapter.setArgumentResolvers(resolverList);
- }
- }
|