Vaadin20如何扫描Maven依赖中带@Endpoint注解的Java类
这个需求完全可以实现,你只需要分别对公共Maven构件和引用该构件的Vaadin项目做如下配置即可:
公共Maven构件侧配置
- 首先调整构件的依赖配置,将Vaadin、Lombok等公共依赖的scope设为
provided,避免和引入项目的依赖版本冲突,Maven依赖示例如下:
<dependencies> <dependency> <groupId>com.vaadin</groupId> <artifactId>flow-server</artifactId> <version>和业务项目匹配的Vaadin版本号</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>你的Lombok版本号</version> <scope>provided</scope> </dependency> </dependencies>
- 新增Spring Boot自动配置类,用于自动扫描公共构件内的Endpoint类,示例如下:
package com.yourcorp.vaadin.endpoint;// 替换为你实际的Endpoint所在包 import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; @Configuration @ComponentScan(basePackages = "com.yourcorp.vaadin.endpoint") public class VaadinCommonEndpointAutoConfiguration { }
- 在公共构件的
src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件中新增一行自动配置类的全限定名,让引用构件的Spring Boot项目可以自动加载该配置:
com.yourcorp.vaadin.endpoint.VaadinCommonEndpointAutoConfiguration
引用构件的Vaadin项目侧配置
运行时可正常访问端点的配置
只要项目正确引入了上述公共Maven构件,Spring Boot启动时会自动加载公共构件的自动配置,将@Endpoint注解的类注册为Spring Bean,运行时即可正常访问端点,无需额外特殊配置。如果你的项目自定义了Endpoint扫描规则,把公共构件的Endpoint包路径加到你自定义的扫描路径中即可。
前端生成对应TypeScript代码的配置
需要在项目的配置文件(application.properties或application.yml)中添加Vaadin Endpoint扫描包配置,把公共构件的Endpoint所在包路径加入扫描列表:
# application.properties配置示例 vaadin.endpoint-packages=com.yourcorp.vaadin.endpoint,你本地项目的Endpoint包路径
配置后Vaadin构建插件在执行构建流程时,就会自动扫描所有指定包下的@Endpoint类,生成对应的前端TypeScript调用代码。
注意:请保持公共构件的Vaadin版本和业务项目的Vaadin版本完全一致,避免出现兼容性问题。
内容的提问来源于stack exchange,提问作者ThomasH
相关产品推荐
相关产品推荐

