Spring manually registers beans

Option One

Implement BeanDefinitionRegistryPostProcessorthe interface and postProcessBeanDefinitionRegistrymanually register it in the method

/**
* 手动注册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);
	} );
}

If you want to read parameters, you need to obtain environment variables to read. At this time, property injection has not yet started, and there is no way to read by injecting parameter configuration objects. implement the EnvironmentAwareinterface,

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

Option II

used to refill

{{o.name}}
{{m.name}}

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=324066886&siteId=291194637