• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    spring动态bean注册示例分享

    1.在一些特殊的场景中需要动态向spring注册bean
    2.spring版本2.5.6

    复制代码 代码如下:

    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);
      }
     }
    }

    您可能感兴趣的文章:
    • Spring Boot如何动态创建Bean示例代码
    • Spring中如何动态注入Bean实例教程
    • JSP 开发之Spring Boot 动态创建Bean
    • 如何在Spring中使用编码方式动态配置Bean详解
    上一篇:通过spring用beanshell实现java接口示例
    下一篇:JSP判断移动设备的正则
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    spring动态bean注册示例分享 spring,动态,bean,注册,示例,