我想创建一个 jar 文件,我可以将其添加到类路径中,并且基本上“插入”到现有的 Spring Boot 应用程序中。我需要它能够具有 Component、ConfigurationProperties 的注释,以及 Spring Boot 为您提供的所有有趣的东西,但我希望它“薄”,并且它将是一个用作完整 Spring Boot Web 应用程序的一部分的 jar 文件。
我需要可以从外部配置 jar 文件。对于不同的部署,属性文件会有所不同。因此,拥有一个有效的 @Configuration 注释至关重要。
我查看了 spring-boot-starter-parent,它有 jetty、tomcat、hibernate 的东西,并且是一个巨大的 jar 文件。我不想这样。
有“瘦” parent 吗?
Spring Boot 根本不是我想要的吗?我应该只使用常规的 spring 项目并设置我的“主”spring boot web 应用程序来进行组件扫描来配置 jar 文件?
最佳答案
听起来您正在尝试定义自己的 Spring Boot Starter。这就是 Spring Boot 为您提供的真正力量,能够包含依赖项并使其自动配置自身。
通过以正确的方式打包 jar,Spring Boot 将自动检测是否存在配置、组件和属性文件。我过去曾在以下情况中使用过此方法:我希望所有应用程序都以特定方式进行日志记录,或者为我的 REST 端点强制执行某种格式。
The documentation非常全面地概述了您需要采取的步骤。但本质上,您将像其他任何 jar 一样打包您的 jar(使用您的 @Bean
、@Component
、@Service
和 @Configuration
类),并提供指向配置的属性文件:
// Example spring.factories file
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.mycorp.libx.autoconfigure.LibXAutoConfiguration,\
com.mycorp.libx.autoconfigure.LibXWebAutoConfiguration
另请查看 @ConditionalOn
... 注释集,它们确实可以帮助根据定义的属性、 Activity 的配置文件或加载的依赖项来控制哪些 Bean 处于 Activity 状态。
关于java - jar 文件的 spring boot 父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48068323/