疯狂的狮子li
2021-05-13 9159e2ed2293722db0c9a42024c00d38c1a2cd62
fix vue与boot整合打包与admin页面路由冲突
已修改2个文件
38 ■■■■■ 文件已修改
ruoyi-admin/src/main/resources/application.yml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/config/AdminServerConfig.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/resources/application.yml
@@ -79,6 +79,10 @@
    restart:
      # 热部署开关
      enabled: true
  # 与vue整合部署使用
  thymeleaf:
    # 将系统模板放置到最前面 否则会与 springboot-admin 页面冲突
    template-resolver-order: 1
  application:
    name: ruoyi-vue-plus
  boot:
ruoyi-framework/src/main/java/com/ruoyi/framework/config/AdminServerConfig.java
@@ -1,15 +1,25 @@
package com.ruoyi.framework.config;
import de.codecentric.boot.admin.server.config.EnableAdminServer;
import org.springframework.beans.factory.ObjectProvider;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.task.TaskExecutionAutoConfiguration;
import org.springframework.boot.autoconfigure.thymeleaf.ThymeleafProperties;
import org.springframework.boot.task.TaskExecutorBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Lazy;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.thymeleaf.dialect.IDialect;
import org.thymeleaf.spring5.ISpringTemplateEngine;
import org.thymeleaf.spring5.SpringTemplateEngine;
import org.thymeleaf.templateresolver.ITemplateResolver;
import java.util.Comparator;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.concurrent.Executor;
import java.util.stream.Collectors;
/**
 * springboot-admin server配置类
@@ -26,4 +36,28 @@
    public ThreadPoolTaskExecutor applicationTaskExecutor(TaskExecutorBuilder builder) {
        return builder.build();
    }
    /**
     * 解决 admin 与 项目 页面的交叉引用 将 admin 的路由放到最后
     * @param properties
     * @param templateResolvers
     * @param dialects
     * @return
     */
    @Bean
    @ConditionalOnMissingBean(ISpringTemplateEngine.class)
    SpringTemplateEngine templateEngine(ThymeleafProperties properties,
                                        ObjectProvider<ITemplateResolver> templateResolvers, ObjectProvider<IDialect> dialects) {
        SpringTemplateEngine engine = new SpringTemplateEngine();
        engine.setEnableSpringELCompiler(properties.isEnableSpringElCompiler());
        engine.setRenderHiddenMarkersBeforeCheckboxes(properties.isRenderHiddenMarkersBeforeCheckboxes());
        templateResolvers.orderedStream().forEach(engine::addTemplateResolver);
        dialects.orderedStream().forEach(engine::addDialect);
        Set<ITemplateResolver> templateResolvers1 = engine.getTemplateResolvers();
        templateResolvers1 = templateResolvers1.stream()
                .sorted(Comparator.comparing(ITemplateResolver::getOrder))
                .collect(Collectors.toCollection(LinkedHashSet::new));
        engine.setTemplateResolvers(templateResolvers1);
        return engine;
    }
}