目前项目需要在tomcat运行的时候加载新业务处理的功能,实现的思路如下:
1 tomcat可以支持动态加载,只要把新的class问价考入到相应工程的class文件夹下就能使用
2 由于业务使用的都是spring,所以需要spring能够在与运行的时候加载新的类:经过一系列的研究,找到了方法:
需要往BeanFactory加入一个新的bean的定义,方法如下:
//1 get BeanFactory
DefaultListableBeanFactory factory =(DefaultListableBeanFactory) WebApplicationContextUtils.getWebApplicationContext(servletContext).getAutowireCapableBeanFactory();
//2 create Bean Definition
AbstractBeanDefinition beanDef = BeanDefinitionReaderUtils.createBeanDefinition(null, businessPara.getBusinessClass(), WebApplicationContextUtils.getWebApplicationContext(servletContext).getClassLoader());
//3 add Bean Definition to BeanFactory
factory.registerBeanDefinition(businessPara.getServiceName(), beanDef);
本文介绍如何在Tomcat运行时动态加载新的Spring Bean。通过获取BeanFactory实例,并创建及注册新的Bean定义,实现业务扩展而无需重启应用服务器。
7786

被折叠的 条评论
为什么被折叠?



