Interface ApplicationModuleSourceFactory
public interface ApplicationModuleSourceFactory
SPI to allow build units contribute additional
The following snippet would register
ApplicationModuleSources in the form of either declaring them
directly via getModuleBasePackages() and getApplicationModuleSources(Function, boolean) or via
provided getRootPackages() and subsequent resolution via
getApplicationModuleSources(JavaPackage, ApplicationModuleDetectionStrategy, boolean) for each of the
packages provided. Implementations would need to be registered in META-INF/spring.factories for the
org.springframework.modulith.core.ApplicationModuleSourceFactory key.The following snippet would register
ApplicationModuleSources for com.acme.foo and
com.acme.bar directly:
class MyCustomFactory implements ApplicationModuleSourceFactory {
@Override
public List<String> getModuleBasePackages() {
return List.of("com.acme.foo", "com.acme.bar");
}
}
The following snippet would register all modules located underneath com.acme found via the
ApplicationModuleDetectionStrategy.explicitlyAnnotated() strategy:
class MyCustomFactory implements ApplicationModuleSourceFactory {
@Override
public List<String> getRootPackages() {
return List.of("com.acme");
}
@Override
ApplicationModuleDetectionStrategy getApplicationModuleDetectionStrategy() {
return ApplicationModuleDetectionStrategy.explicitlyAnnotated();
}
}
- Since:
- 1.3
- Author:
- Oliver Drotbohm
-
Method Summary
Modifier and TypeMethodDescriptiondefault @Nullable ApplicationModuleDetectionStrategyReturns theApplicationModuleDetectionStrategyto be used to detectApplicationModuleSources from the packages returned bygetRootPackages().default Stream<ApplicationModuleSource>getApplicationModuleSources(Function<String, JavaPackage> packages, boolean useFullyQualifiedModuleNames) CreatesApplicationModuleSourcefor individually, manually described application modules.default Stream<ApplicationModuleSource>getApplicationModuleSources(JavaPackage rootPackage, ApplicationModuleDetectionStrategy strategy, boolean useFullyQualifiedModuleNames) Creates allApplicationModuleSources using the given base package andApplicationModuleDetectionStrategy.Returns additional module base packages to createApplicationModuleSources from.Returns the additional root packages to be considered.
-
Method Details
-
getRootPackages
Returns the additional root packages to be considered. The ones returned from this method will be scanned forApplicationModuleSources viagetApplicationModuleSources(JavaPackage, ApplicationModuleDetectionStrategy, boolean)using theApplicationModuleDetectionStrategyreturned fromgetApplicationModuleDetectionStrategy(). If the latter is null, the defaultApplicationModuleDetectionStrategyis used.- Returns:
- must not be null.
-
getModuleBasePackages
Returns additional module base packages to createApplicationModuleSources from. Subsequently handled bygetApplicationModuleSources(Function, boolean).- Returns:
- must not be null.
-
getApplicationModuleDetectionStrategy
Returns theApplicationModuleDetectionStrategyto be used to detectApplicationModuleSources from the packages returned bygetRootPackages(). If null is returned, the defaultApplicationModuleDetectionStrategywill be used.- Returns:
- can be null.
-
getApplicationModuleSources
default Stream<ApplicationModuleSource> getApplicationModuleSources(JavaPackage rootPackage, ApplicationModuleDetectionStrategy strategy, boolean useFullyQualifiedModuleNames) Creates allApplicationModuleSources using the given base package andApplicationModuleDetectionStrategy.- Parameters:
rootPackage- will never be null.strategy- will never be null.useFullyQualifiedModuleNames- whether to use fully-qualified names for application modules.- Returns:
- must not be null.
- See Also:
-
getApplicationModuleSources
default Stream<ApplicationModuleSource> getApplicationModuleSources(Function<String, JavaPackage> packages, boolean useFullyQualifiedModuleNames) CreatesApplicationModuleSourcefor individually, manually described application modules.- Parameters:
packages- will never be null.useFullyQualifiedModuleNames- whether to use fully-qualified names for application modules.- Returns:
- must not be null.
- See Also:
-