【问题标题】:Spring Boot and Angular (5) project structureSpring Boot与Angular(五)项目结构
【发布时间】:2018-07-08 06:19:24
【问题描述】:

我对在同一个项目中使用这些技术的最佳做法有疑问。推荐和最常用的项目结构是什么?

我看到了如何设计项目结构的三种方法:

  1. 创建maven多模块项目,并创建2个模块(前端用angular cli项目,后端用spring项目)
  2. 在路径 src/main/webapp 上将 Angular cli 项目创建到 spring 项目中
  3. 这个选项和第二个类似,除了后缀为*.json、*.ts等的配置文件之外,angular cli也会被创建到路径src/main/webapp的spring项目中......这些文件将在pom中的根目录下。所以 webapp 文件夹将只包含源文件和资产(jhipster 风格)。

你有什么推荐的?另外,当我选择其中一个选项时,是否可以配置项目以将角度源文件导出到可部署的 JAR 文件中?感谢您的建议。

【问题讨论】:

  • 第一种方式是反直觉的。为什么将 Angular 项目与 Maven 强耦合,使其成为模块 maven ?第二种方式似乎更清洁:它将不同的东西放在不同的地方。第三种方式也过多地混合了两个世界。
  • @davidxxx 我也在考虑第二个或第一个选项。第一个对我来说看起来最干净。

标签: spring angular maven spring-boot angular-cli


【解决方案1】:

我一直采用将源代码放在您通常期望的位置的方法 - 在“src/main”目录下。所以,我有 src/main/java 和 src/main javascript,而 angular 应用程序在后一个目录中。

我将 Angular 应用程序设置为编译到 src/main/resources/static/ui 中,并配置 SpringBoot 应用程序以从那里提供服务。

-- 附加信息 - 为了提供 Angular 应用的 index.html,我使用了这个:

@Bean
public WebMvcConfigurerAdapter forwardToIndex() {
    final String uiForward = "redirect:/ui/index.html";
    final String[] fauxRoots = new String[] {"/", "/index.html", "/ui", "/ui/"};

    return new WebMvcConfigurerAdapter() {
        @Override
        public void addViewControllers(ViewControllerRegistry registry) {
            for(String path: fauxRoots) {
                registry.addViewController(path).setViewName(uiForward);
            }
        }

    };
}

我的 Angular 应用程序内置在 src/main/resources/static/ui 中,Spring 将默认提供来自 src/main/resources/static 的静态内容(我认为),因此“正常工作”

【讨论】:

  • 它的好主意 :) 如果我使用这种结构,我需要经典控制器来服务索引文件吗?还是休息控制器就够了,自动提供索引?
猜你喜欢
  • 2021-05-29
  • 2017-02-18
  • 2017-05-15
  • 2019-06-23
  • 2018-02-11
  • 2023-01-28
  • 2018-04-26
  • 2021-12-02
  • 2021-04-06
相关资源
最近更新 更多