在Spring Boot中,您可以执行以下操作:
src/main/resources/META-INF/spring.factories
# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.springframework.boot.autoconfigure.admin.AConfiguration,\
org.springframework.boot.autoconfigure.admin.BConfiguration,\
org.springframework.boot.autoconfigure.admin.CConfiguration,\
org.springframework.boot.autoconfigure.admin.DConfiguration,\
org.springframework.boot.autoconfigure.admin.EConfiguration,\
org.springframework.boot.autoconfigure.admin.FConfiguration,\
哪个很好。但是,经过一年的发展,自动配置列表现在已> 15行,这使其难以管理。
是否想知道是否可以将 spring.factories 分为多个文件?最好将整个项目保存在一个JAR中。
也许还有其他方法可以帮助组织我不知道的EnableAutoConfiguration
?
提前谢谢!
答案 0 :(得分:2)
在使用spring-boot时,我们使用了多个“启动器”,每个启动器都有一个自动配置和spring.factories
文件。
因此,一种方法是将您的项目拆分为模块-一种用于每种自动配置的方法,在模块中定义一个专用的spring.factories
文件,然后将所有模块作为运行时依赖项导入到主应用程序模块中
您可以使用maven或gradle来管理多模块项目及其间的依赖关系:
等级:Install previous versions of R on ubuntu
行家:https://guides.gradle.org/creating-multi-project-builds/
示例:
根
moduleA
moduleB
以此类推...
答案 1 :(得分:0)
我已经找到了解决这个问题的方法。
注意:此确切的解决方案假设您仅在EnableAutoConfiguration
中使用了 spring.factiores
,如果您在{中使用了多种类型的配置,则会崩溃{1}}。
一个人可以做:
spring.factories
并将其合并到一个文件中。
请注意,我正在使用 Maven Antrun ,但我怀疑Gradle也会具有类似的功能。
在您的src/main/resources/META-INF/spring.factories
src/main/resources/META-INF/spring-2.factories
src/main/resources/META-INF/spring-3.factories
src/main/resources/META-INF/spring-4.factories
中,添加以下内容:
pom.xml
在 <plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<id>default-ci</id>
<goals>
<goal>run</goal>
</goals>
<phase>process-resources</phase>
<configuration>
<target>
<replace token='org.springframework.boot.autoconfigure.EnableAutoConfiguration=' value=','
dir="${project.build.directory}/classes/META-INF">
<include name="spring-*.factories"/>
</replace>
<concat destfile="${project.build.directory}/classes/META-INF/spring.factories" overwrite="yes" append="yes">
<fileset dir="${project.build.directory}/classes/META-INF" includes="spring-*.factories" />
</concat>
</target>
</configuration>
</execution>
</executions>
</plugin>
中是常规配置:
spring.factories
但是在spring-2.factories和其他工厂中,您从# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.springframework.boot.autoconfigure.admin.AConfiguration,\
org.springframework.boot.autoconfigure.admin.BConfiguration
开始,而不是默认语句:
,\
:
spring-2.factories
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.springframework.boot.autoconfigure.admin.CConfiguration
:
spring-3.factories
所有这些之后,输出类目录中的结果org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.springframework.boot.autoconfigure.admin.DConfiguration
将会非常好:
spring.factories