为了账号安全,请及时绑定邮箱和手机立即绑定

如何通过 spring.factories 将 SpringBootApp 迁移到库?

如何通过 spring.factories 将 SpringBootApp 迁移到库?

鸿蒙传说 2022-06-30 11:27:02
我们已经构建了一个 Spring 服务发现解决方案,该解决方案@Component通过@Service在根包级别通过@SpringBootApplication. 该项目遵循标准的 maven/spring 布局:project  src/main/java    service      - ServiceA.java      - ServiceB.java      ...    model      - modelA.java      ...    component      - ComponentA.java      - ComponentB.java    BootApp.java    pom.xml我们现在想将它作为一个库在内部分发,这样做需要一个spring.factories文件(请参阅marathon 是如何做到的/请参阅spring autoconfig docs)。查看其他服务发现实现,例如marathonand eureka,看来我应该删除所有自动装配注释(即@Componentand @Service),而是手动将所有组件/bean 配置为一个或多个@Configuration类。该应用程序已经自动装配和引导超过十个类 - 我宁愿不必重构和手动连接它们。我的问题:有什么方法可以简单地保留现有的自动装配/项目结构并spring.factories在类似于组件扫描的情况下将其拾取?就像是:org.springframework.boot.autoconfigure.EnableAutoConfiguration=project.BootApp或者org.springframework.boot.autoconfigure.EnableAutoConfiguration=project.*spring.factories关于如何在没有大量@Configuration课程的情况下支持重构,还有其他提示或最佳实践吗?是否可以分开差异并让我们的大部分内部对象自动装配,然后手动配置公共对象,如DiscoveryClientand ServiceRegistery(参见spring cloud SPI)并在中引用它们spring.factories?
查看完整描述

1 回答

?
眼眸繁星

TA贡献1873条经验 获得超9个赞

事实证明,可以以@ComponentScan非常相似的方式使用@SpringBootApplication


@Configuration

@ComponentScan("com.bnymellon.tsg.discovery.springcloud.autoconfig")

public class BootApp {


}

关键区别在于@SpringBotApplicationcontains @EnableAutoConfiguration,它在这里表现不佳。


PS - 我没有继承,spring-starter-parent所以spring.factories没有包含在构建的工件中。必须添加以下内容pom.xml


<build>

    <resources>

        <resource>

            <directory>src/main/resources</directory>

            <includes>

                <include>**/*.factories</include>

            </includes>

        </resource>

    </resources>

</build>

我想在一天结束时,通过注释自动装配(例如@Service)是一种有效的方法,我在这个问题中认为它与 spring.factories 不兼容是不正确的。


查看完整回答
反对 回复 2022-06-30
  • 1 回答
  • 0 关注
  • 103 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号