源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

spring动态bean注册示例分享

  • 时间:2021-07-08 06:08 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:spring动态bean注册示例分享
1.在一些特殊的场景中需要动态向spring注册bean 2.spring版本2.5.6
[u]复制代码[/u] 代码如下:
public class ServiceServiceImpl implements ServiceService, ApplicationContextAware {  @Override  public void setApplicationContext(org.springframework.context.ApplicationContext applicationContext)    throws BeansException {   this.context = applicationContext;  }  public void addBeanService(Service service) throws BVSException {   if (!context.containsBean(service.getServiceName())) {    Class<?> serviceClass = getServiceClass(service.getClassName());    BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder.genericBeanDefinition(serviceClass);    beanDefinitionBuilder.addPropertyValue("servicename", service.getServiceName());    registerBean(service.getServiceName(), beanDefinitionBuilder.getRawBeanDefinition());   }  }  /**   * @desc 向spring容器注册bean   * @param beanName   * @param beanDefinition   */  private void registerBean(String beanName, BeanDefinition beanDefinition) {   ConfigurableApplicationContext configurableApplicationContext = (ConfigurableApplicationContext) context;   BeanDefinitionRegistry beanDefinitonRegistry = (BeanDefinitionRegistry) configurableApplicationContext     .getBeanFactory();   beanDefinitonRegistry.registerBeanDefinition(beanName, beanDefinition);  }  /**   * @desc 根据类名查找class   * @param className   * @return   * @throws BVSException   */  private Class<?> getServiceClass(String className) throws BVSException {   try {    return Thread.currentThread().getContextClassLoader().loadClass(className);   } catch (ClassNotFoundException e) {    log.error("not found service class:" + className, e);    throw new BVSException("not found service class:" + className, e);   }  } }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部