您的位置:首页 > 编程语言 > Java开发

【Spring】bean动态注册到spring

2018-06-04 12:04 330 查看

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

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: