Package com.aim2be.platform.outbox
Class OutboxAutoConfigurationPackagesRegistrar
java.lang.Object
com.aim2be.platform.outbox.OutboxAutoConfigurationPackagesRegistrar
- All Implemented Interfaces:
org.springframework.context.annotation.ImportBeanDefinitionRegistrar
public class OutboxAutoConfigurationPackagesRegistrar
extends Object
implements org.springframework.context.annotation.ImportBeanDefinitionRegistrar
Registers
com.aim2be.platform.outbox with Spring Boot's
AutoConfigurationPackages additively so BOTH Hibernate's entity
scan (driven by @EntityScan resolution in
JpaBaseConfiguration.getPackagesToScan()) AND Spring Boot's
JpaRepositoriesAutoConfiguration (which uses the same
AutoConfigurationPackages list to determine repository scan
roots) see OutboxRecord + OutboxRecordRepository WITHOUT
replacing the consumer's own @SpringBootApplication-derived
packages.
Why this exists instead of @EntityScan + @EnableJpaRepositories
on the autoconfig:
- Spring Boot's
JpaBaseConfiguration.getPackagesToScan()consultsEntityScanPackagesFIRST and falls back toAutoConfigurationPackagesONLY when the former is empty — applying@EntityScan(...)on the library wipes the consumer's fallback (R3 finding). - Spring Boot's
JpaRepositoriesAutoConfigurationis gated on@ConditionalOnMissingBean({ JpaRepositoryFactoryBean.class, JpaRepositoryConfigExtension.class })— applying@EnableJpaRepositories(basePackageClasses = ...)on the library registers those beans (scoped to the library's package only) and disables the consumer's autoconfig entirely, leaving the consumer's own Spring Data repositories unscanned (R7 finding).
Registering via AutoConfigurationPackages.register(...) is the
supported library-side hook for both concerns: it APPENDS to the
existing list, so the consumer's
@SpringBootApplication-derived packages PLUS our library's
package are scanned by the consumer's still-active
HibernateJpaAutoConfiguration + JpaRepositoriesAutoConfiguration.
Imported from OutboxAutoConfiguration via @Import.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidregisterBeanDefinitions(org.springframework.core.type.AnnotationMetadata importingClassMetadata, org.springframework.beans.factory.support.BeanDefinitionRegistry registry) Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.springframework.context.annotation.ImportBeanDefinitionRegistrar
registerBeanDefinitions
-
Constructor Details
-
OutboxAutoConfigurationPackagesRegistrar
public OutboxAutoConfigurationPackagesRegistrar()
-
-
Method Details
-
registerBeanDefinitions
public void registerBeanDefinitions(org.springframework.core.type.AnnotationMetadata importingClassMetadata, org.springframework.beans.factory.support.BeanDefinitionRegistry registry) - Specified by:
registerBeanDefinitionsin interfaceorg.springframework.context.annotation.ImportBeanDefinitionRegistrar
-