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() consults EntityScanPackages FIRST and falls back to AutoConfigurationPackages ONLY when the former is empty — applying @EntityScan(...) on the library wipes the consumer's fallback (R3 finding).
  • Spring Boot's JpaRepositoriesAutoConfiguration is 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 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:
      registerBeanDefinitions in interface org.springframework.context.annotation.ImportBeanDefinitionRegistrar