首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

[Spring3.1]动态创造Spring bean

2012-11-18 
[Spring3.1]动态创建Spring bean?public BaseService getService(String className)?public class Custom

[Spring3.1]动态创建Spring bean

?

public BaseService getService(String className);?

public class CustomBaseServiceFactory { private static final String BEAN_POSTFIX = ".service"; public BaseService getService(String className) { String beanName = className + BEAN_POSTFIX; ConfigurableApplicationContext applicationContext = (ConfigurableApplicationContext) SpringContextHolder .getApplicationContext(); DefaultListableBeanFactory beanFactory = (DefaultListableBeanFactory) applicationContext .getBeanFactory(); if (!beanFactory.containsBean(beanName)) { BeanDefinitionBuilder bdb = BeanDefinitionBuilder .rootBeanDefinition(className); bdb.setScope("prototype"); beanFactory.registerBeanDefinition(beanName, bdb.getBeanDefinition()); } return (BaseService) beanFactory.getBean(beanName); }}?

这样,即完成了对BaseService的改造,无论是对业务类增加AOP或者注入属性都可以方便地实现。更为方便的是,如果使用的是该类的子类,不再需要在子类上增加@Service,@Component之类的标记了;如果需要在子类中注入其他的bean,只需要在该属性上增加@autowired或@resource即可实现属性的注入。

?

?

?

1 楼 melin 2012-09-14   以前用过,遇到aop不灵啊 2 楼 dinguangx 2012-09-17   melin 写道以前用过,遇到aop不灵啊
经过后面的测试,我也发现这个问题了,不知道算不算spring的BUG,还是说spring有意而为之

热点排行