- public class ServiceServiceImpl implements ServiceService, ApplicationContextAware {
- @Override
- public void setApplicationContext(org.springframework.context.ApplicationContext applicationContext)
- throws BeansException {
- this.context = applicationContext;
- }
- public void addBeanService(Service service) throws BVSException {
- if (!context.containsBean(service.getServiceName())) {
- Class<?> serviceClass = getServiceClass(service.getClassName());
- BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder.genericBeanDefinition(serviceClass);
- beanDefinitionBuilder.addPropertyValue("servicename", service.getServiceName());
- registerBean(service.getServiceName(), beanDefinitionBuilder.getRawBeanDefinition());
- }
- }
- /**
- * @desc 向spring容器注册bean
- * @param beanName
- * @param beanDefinition
- */
- private void registerBean(String beanName, BeanDefinition beanDefinition) {
- ConfigurableApplicationContext configurableApplicationContext = (ConfigurableApplicationContext) context;
- BeanDefinitionRegistry beanDefinitonRegistry = (BeanDefinitionRegistry) configurableApplicationContext
- .getBeanFactory();
- beanDefinitonRegistry.registerBeanDefinition(beanName, beanDefinition);
- }
- /**
- * @desc 根据类名查找class
- * @param className
- * @return
- * @throws BVSException
- */
- private Class<?> getServiceClass(String className) throws BVSException {
- try {
- return Thread.currentThread().getContextClassLoader().loadClass(className);
- } catch (ClassNotFoundException e) {
- log.error("not found service class:" + className, e);
- throw new BVSException("not found service class:" + className, e);
- }
- }
- }
- //该片段来自于http://www.codesnippet.cn/detail/1211201410949.html
来源: http://www.codesnippet.cn/detail/1211201410949.html