容器运行时spring动态加载代理类
目前项目需要在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);