【问题标题】:Multi-Module Vaadin project where routed views are located in independent modules多模块 Vaadin 项目,其中路由视图位于​​独立模块中
【发布时间】:2021-05-11 06:24:39
【问题描述】:

我正在构思一个非常庞大的 vaadin 应用程序,它由一个骨架(提供 ui 框架)和数百个功能单元(提供特定的 vaadin 视图)组成。

主要的架构点是让骨架对功能单元不可知,因此不应将对功能单元的单个 java 依赖注入到骨架中。每个单独的功能单元都必须在它自己独特的 JAR 中。

vaadin 容器由骨架模块启动。完全有可能构建一个导航,其中包含通向功能单元 (/routeToView001.../routeToView999) 的所有必要路线,而无需进一步了解它们。

但是,我看不到,当浏览器中发生导航时,启动的 vaadin spring boot 容器如何从独立的 JAR 中加载 java 类。实际尝试失败。有什么想法吗?

【问题讨论】:

  • “实际尝试失败”:请添加您尝试过的内容以及失败的原因。我也不确定,这(仅)与 vaadin 有什么关系。如果您将其打开到一般的 java 中,您将获得更多更好的答案(当然,除非您面临特定于 re vaadin 的问题)。
  • 在这个 Vaadin 微前端 POC 中进行了类似的实验:vaadin.com/labs/micro-frontend 已经看到它并且该 POC 中是否缺少一些东西来满足您的用例?

标签: vaadin vaadin-flow


【解决方案1】:

默认情况下,Spring Boot 集成在包含 @SpringBootApplication 类的 Java 包中查找 @Route 类。这可以通过将包名称传递给 @EnableVaadin 注释来进一步配置。

我没有在实践中对此进行过测试,但可能会有多个 @EnableVaadin 注释,这样每个模块中都会有一个注释,并且通过它还提供多个位置来查找 @Route 类。在这种情况下,每个模块中的 @EnableVaadin 类也必须使用常规的 Spring Boot 自动配置机制以与任何其他 @Configuration 相同的方式注册自己。

另一种选择是手动将路由类注册到应用程序的路由注册表(使用ApplicationRouteRegistry.getInstance(new VaadinServletContext(servletContext)) 访问)。在这种情况下,您可能仍需要在基本模块中至少有一个虚拟 @Route,因为除非以常规方式发现至少一个 @Route 类,否则 Vaadin 可能不会在 Spring Boot 环境中自动启用自身。

【讨论】:

  • 请让我们知道您的发现,以便其他人也可以从您的发现中受益!
猜你喜欢
  • 2019-03-17
  • 2016-07-29
  • 1970-01-01
  • 1970-01-01
  • 2021-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-13
相关资源
最近更新 更多