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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值