Spring 手动注册Bean

原创
2021/12/01 21:39
阅读数 538

方案一

实现BeanDefinitionRegistryPostProcessor接口,在postProcessBeanDefinitionRegistry方法中进行手动注册

/**
* 手动注册swagger docket bean
*/
@Override
public void postProcessBeanDefinitionRegistry(@NotNull BeanDefinitionRegistry registry) throws BeansException {
	Map<String, String> basePackages = this.swaggerProperties.getBasePackages();
	basePackages.forEach((key, value) ->{
		// 创建Bean定义
		RootBeanDefinition bean = new RootBeanDefinition(GroupedOpenApi.class,()->this.createApi(key,value));
		// 注册Bean定义
		registry.registerBeanDefinition(key+"Api", bean);
	} );
}

如果要读取参数,需要获取环境变量进行读取,此时属性注入还未开始,没办法通过注入参数配置对象进行读取。实现EnvironmentAware接口,

/**
* 获取环境变量并设置到swaggerProperties对象中
*/
@Override
public void setEnvironment(@NotNull Environment environment) {
	// 从环境变量中根据指定前缀获取对应的参数配置类
	BindResult<SwaggerProperties> bind = Binder.get(environment).bind(swaggerPropertiesPrefix, SwaggerProperties.class);
	this.swaggerProperties = bind.get();
}

方案二

用到了再补充

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部