【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)); }
- spring中注册bean(通过代码动态注册)
- spring 动态注册bean
- spring中注册bean(通过代码动态注册)
- Spring动态注册bean实现动态多数据源
- spring中注册bean(通过代码动态注册)
- Spring动态注册bean实现动态多数据源
- Spring动态注册bean实现动态多数据源
- Spring之动态注册bean的实现方法
- Spring动态注册Bean
- spring 根据配置文件动态注册bean
- Spring 实现动态注册Bean
- Spring实现Bean动态注册
- Spring运行时动态注册bean的方法
- spring bean装配 注册动态工厂和静态工厂
- spring实现动态注册bean
- spring中注册bean(通过代码动态注册)
- 理解spring的BeanDefinition和配置文件(原文标题:动态注册bean到spring容器)
- spring动态bean注册示例分享
- spring动态bean注册示例分享
- spring中注册bean(通过代码动态注册)