优秀企业网站的优缺点,域名注册商网站,房地产型网站建设,怎样做一个企业的网站建站【README】
1.采用 ImportBeanDefinitionRegistrar 动态注册bean#xff0c;应用场景有#xff1a;
如 一个后端服务需要用到多个 rabbitmq集群客户端#xff0c;kafka客户端#xff1b;这时就需要手动注册多个同类型的bean#xff0c;但不同beanName#xff0c;并用 …【README】
1.采用 ImportBeanDefinitionRegistrar 动态注册bean应用场景有
如 一个后端服务需要用到多个 rabbitmq集群客户端kafka客户端这时就需要手动注册多个同类型的bean但不同beanName并用 Resource(namebeanName) 或AutowireQualifier来引入bean
2.在封装后台框架时经常会注册同类型的多个bean因此 ImportBeanDefinitionRegistrar 特别有用
3.本文代码转自
https://www.logicbig.com/tutorials/spring-framework/spring-core/import-bean-registrar.htmlhttps://www.logicbig.com/tutorials/spring-framework/spring-core/import-bean-registrar.html 【例】使用 ImportBeanDefinitionRegistrar 动态注册bean
public class MyBeanRegistrar implements ImportBeanDefinitionRegistrar {Overridepublic void registerBeanDefinitions (AnnotationMetadata importingClassMetadata,BeanDefinitionRegistry registry) {GenericBeanDefinition gbd new GenericBeanDefinition();gbd.setBeanClass(AppBean.class);// 显然这里是基于反射调用bean的setter方法 gbd.getPropertyValues().addPropertyValue(str, value set from registrar);registry.registerBeanDefinition(appBean, gbd);}
}
自动装配类
Configuration
Import(MyBeanRegistrar.class)
public class MyConfig {BeanClientBean clientBean () {return new ClientBean();}
}
使用动态注册的bean AppBean
public class ClientBean {Autowiredprivate AppBean appBean;public void doSomething () {appBean.process();}
}
AppBean 定义
public class AppBean {private String str;public void setStr (String str) {this.str str;}public void process () {System.out.println(str);}
}
测试方法入口
public class ImportBeanDefinitionRegistrarExample {public static void main (String[] args) {ApplicationContext context new AnnotationConfigApplicationContext(MyConfig.class);ClientBean bean context.getBean(ClientBean.class);bean.doSomething();}
}
打印日志 value set from registrar