我正在尝试编写自定义自动配置类来覆盖默认自动配置类的行为。
例如,假设我试图覆盖org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration
的行为。
如果我将自定义自动配置类命名为默认值 - 例如 - com.rabbit.RabbitAutoConfiguration
,则它们都具有相同的bean名称。
我在我的自定义autoconfigure类中使用@AutoConfigureAfter
,应用程序正常工作。但是,当我尝试编写测试类来测试自定义自动配置类com.rabbit.RabbitAutoConfiguration
时,会出现问题。
由于两者都具有相同的bean名称,因此在编写测试用例时,我注册这些类的顺序非常重要。
例如在测试类中,
annotationConfigWebApplicationContext.register(org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration.class, com.rabbit.RabbitAutoConfiguration.class);
与相比,具有不同的行为
annotationConfigWebApplicationContext.register(com.rabbit.RabbitAutoConfiguration.class, org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration.class);
但是,我设法通过指定@Configuration("customRabbitAutoConfiguration")
将bean名称显式指定给我的自定义autoconfigure类来克服这个问题。
班级名称不应该相同吗?如果是这样,为什么我只在编写测试类时才看到这个问题,而不是在使用真实应用程序时。
只是想知道是否有更好的方法。