在Spring中,您可以执行以下操作:
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分离成多个文件?最好是把整个项目放在一个罐子里。
或者,也许还有另外一种方法来帮助组织我不知道的EnableAutoConfiguration
呢?
提前感谢!
发布于 2019-04-30 02:14:15
我已经找到了解决这个问题的办法。
注意:这个精确的解决方案假设您只在您的spring.factiores
__中使用了spring.factiores
,如果您在spring.factories
__中使用多个配置类型,它就会崩溃。
我们可以做到:
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
并将其合并成一个文件。
注意,我使用的是Maven Antrun,但我怀疑Gradle也有类似的特性。
在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
中是正常的配置:
# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.springframework.boot.autoconfigure.admin.AConfiguration,\
org.springframework.boot.autoconfigure.admin.BConfiguration
但是在Spring-2工厂和其他地方,您可以从,\
开始,而不是默认的语句:
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
将是非常好的:
# 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
发布于 2019-04-29 09:01:39
在使用spring引导时,我们使用多个“启动程序”,每个启动程序都有一个自动配置和spring.factories
文件。
因此,一种方法可以是将项目划分为模块--每个自动配置一个模块,在模块中定义一个专用的spring.factories
文件,并将所有模块作为主应用程序模块中的运行时依赖项导入。
您可以使用maven或gradle来管理多模块项目及其之间的依赖关系:
梯度:https://guides.gradle.org/creating-multi-project-builds/
Maven:https://www.baeldung.com/maven-multi-module
示例:
根部
- src/main/resources/META-INF/spring.factories
- src/main/resources/META-INF/spring.factories
等等..。
https://stackoverflow.com/questions/55899631
复制相似问题