zoukankan      html  css  js  c++  java
  • 【Spring】bean动态注册到spring

    /*
    * http://412887952-qq-com.iteye.com/blog/2348445
    * http://www.jb51.net/article/106558.htm
    * https://my.oschina.net/xiaominmin/blog/1607747
    */
    public void loadProtoResources() throws IOException, ClassNotFoundException {
    Resource[] resources = null;
    PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
    String protoPackage = grpcLocalProxyProperties.getDescriptorSet();
    String protoClasspath = protoPackage.replace(".", "/");
    resources = resolver.getResources(protoClasspath + "/*Proto.class");

    ConfigurableApplicationContext context = (ConfigurableApplicationContext)applicationContext;
    DefaultListableBeanFactory beanFactory = (DefaultListableBeanFactory)context.getBeanFactory();

    for (Resource resource : resources) {
    String className = resource.getFilename().split("\.")[0];
    String fullClassName = protoPackage + "." + className;
    Class<?> cls = Class.forName(fullClassName);
    BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder.rootBeanDefinition(cls);
    // beanDefinitionBuilder.addPropertyValue("someKey","someValue");
    assert fullClassName.equals(cls.getName());
    beanFactory.registerBeanDefinition(cls.getName(), beanDefinitionBuilder.getBeanDefinition());
    protoBeans.add(fullClassName);
    }

    protoBeans.stream().forEach(protoBean -> LOG.info("Registered protoBeans: {}", protoBean));
    }

        /*
         * http://412887952-qq-com.iteye.com/blog/2348445
         * http://www.jb51.net/article/106558.htm
         * https://my.oschina.net/xiaominmin/blog/1607747
         */    
        public void loadProtoResources() throws IOException, ClassNotFoundException {
            Resource[] resources = null;
            PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
            String protoPackage = grpcLocalProxyProperties.getDescriptorSet();
            String protoClasspath = protoPackage.replace(".", "/");
            resources = resolver.getResources(protoClasspath + "/*Proto.class");
            
            ConfigurableApplicationContext context = (ConfigurableApplicationContext)applicationContext;
            DefaultListableBeanFactory beanFactory = (DefaultListableBeanFactory)context.getBeanFactory();
            
            for (Resource resource : resources) {
                String className = resource.getFilename().split("\.")[0];
                String fullClassName = protoPackage + "." + className;
                Class<?> cls = Class.forName(fullClassName);
                BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder.rootBeanDefinition(cls);
    //            beanDefinitionBuilder.addPropertyValue("someKey","someValue");
                assert fullClassName.equals(cls.getName());
                beanFactory.registerBeanDefinition(cls.getName(), beanDefinitionBuilder.getBeanDefinition());
                protoBeans.add(fullClassName);
            }
            
            protoBeans.stream().forEach(protoBean -> LOG.info("Registered protoBeans: {}", protoBean));
        }    
  • 相关阅读:
    2020软件工程作业04
    2020软件工程作业02
    2020软件工程作业01
    2020软件工程个人作业06——软件工程实践总结作业
    【软件工程小组-冲刺日志(第二天)】
    软件工程逃课小组 【团队名称-凡事预则立】
    2020软件工程作业——团队02
    2020软件工程作业05
    2020软件工程作业00——问题清单
    2020软件工程作业04
  • 原文地址:https://www.cnblogs.com/junneyang/p/9132679.html
Copyright © 2011-2022 走看看