spring注册bean

lztngnrs  于 2021-07-24  发布在  Java
关注(0)|答案(0)|浏览(234)

我需要从另一个模块注册一些配置bean。以下是我所拥有的:

@Configuration
public class MyConfiguration {
    @Bean
    public FirstConfig(CustomManager manager, CustomContext context) {
        return manager.get(FirstConfig.class, context);
    }

    @Bean
    public SecondConfig(CustomManager manager, CustomContext context) {
        return manager.get(SecondConfig.class, context);
    }

    @Bean
    public ThirdConfig(CustomManager manager, CustomContext context) {
        return manager.get(ThirdConfig.class, context);
    }
    // some other beans
}

上面的代码工作得很好,但是正如您所看到的,有很多样板代码。所以我在考虑创建一个自定义注解来简化这个过程。比如:

@Configuration
@EnableConfigBeans({FirstConfig.class, SecondConfig.class, ThirdConfig.class})
public class MyConfiguration {
    // some other beans
}

我采取的方法是 @Import 并实现接口 ImportBeanDefinitionRegistrar ```
public class CustomBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar

定义我的注解如下:

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Import({CustomBeanDefinitionRegistrar.class})
public @interface EnableConfigBeans {
Class<?>[] value();
}

但是,我不能自动连线 `CustomManager` 或者 `CustomContext` 在 `CustomBeanDefinitionRegistrar` 因为这些bean在那个阶段还没有准备好使用。
有人能给我一些关于如何实现这个特性的建议吗?谢谢

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题