spring动态注入bean
2013-11-25 13:25
281 查看
//动态注入的方法
/**
* 通过BeanDefinition注册bean到spring context,无则加入,有则修改
* @param cxt spring context
* @param beanId
* @param classPath 类路径
* @param pvs bean属性值
*/
public void reg(ApplicationContext cxt, String beanId, String classPath, Map<String, Object> pvs){
BeanDefinition bdef = new GenericBeanDefinition() ;
bdef.setBeanClassName(classPath) ;
for (String p : pvs.keySet()) {
bdef.getPropertyValues().add(p, pvs.get(p)) ;
}
DefaultListableBeanFactory fty = (DefaultListableBeanFactory) cxt.getAutowireCapableBeanFactory() ;
fty.registerBeanDefinition(beanId, bdef) ;
}
/**
* 动态注销bean
* @param cxt spring context
* @param beanId
*/
public void destory(ApplicationContext cxt, String beanId){
DefaultListableBeanFactory fty = (DefaultListableBeanFactory) cxt.getAutowireCapableBeanFactory() ;
if(fty.containsBean(beanId)) {
fty.removeBeanDefinition(beanId);
}
}
/**
* 获取bean
* @param context spring context
* @param beanId
*/
public Object get(ApplicationContext cxt, String beanId){
try {
return cxt.getBean(beanId) ;
} catch (Exception e) {
//e.printStackTrace() ;
return null ;
}
}
//使用
//获取一个service来
String beanId = "xxxBeanServiceId" ;
ApplicationContext cxt = WebApplicationContextUtils.getWebApplicationContext(ServletActionContext.getServletContext()) ;
Object obj = get(cxt, beanId) ;
if( obj == null ){
Map<String, Object> pvs = new HashMap<String, Object>() ;
pvs.put("xxService", xxService) ; //需要相应的set方法
pvs.put("xxxxxstring", "xxxxxxxxxxxxxxxxxxxxxxx") ;//需要相应的set方法
reg(cxt, beanId, cn.com.xx.xxxBeanServiceImpl/*service的实现类*/, pvs) ;
}
obj = get(cxt, beanId) ;
if( obj == null || !(obj instanceof xxxBeanService/*service接口*/) ){
setErrMsg("未能获取xxxBeanService") ;
return ERROR ;
}
/**
* 通过BeanDefinition注册bean到spring context,无则加入,有则修改
* @param cxt spring context
* @param beanId
* @param classPath 类路径
* @param pvs bean属性值
*/
public void reg(ApplicationContext cxt, String beanId, String classPath, Map<String, Object> pvs){
BeanDefinition bdef = new GenericBeanDefinition() ;
bdef.setBeanClassName(classPath) ;
for (String p : pvs.keySet()) {
bdef.getPropertyValues().add(p, pvs.get(p)) ;
}
DefaultListableBeanFactory fty = (DefaultListableBeanFactory) cxt.getAutowireCapableBeanFactory() ;
fty.registerBeanDefinition(beanId, bdef) ;
}
/**
* 动态注销bean
* @param cxt spring context
* @param beanId
*/
public void destory(ApplicationContext cxt, String beanId){
DefaultListableBeanFactory fty = (DefaultListableBeanFactory) cxt.getAutowireCapableBeanFactory() ;
if(fty.containsBean(beanId)) {
fty.removeBeanDefinition(beanId);
}
}
/**
* 获取bean
* @param context spring context
* @param beanId
*/
public Object get(ApplicationContext cxt, String beanId){
try {
return cxt.getBean(beanId) ;
} catch (Exception e) {
//e.printStackTrace() ;
return null ;
}
}
//使用
//获取一个service来
String beanId = "xxxBeanServiceId" ;
ApplicationContext cxt = WebApplicationContextUtils.getWebApplicationContext(ServletActionContext.getServletContext()) ;
Object obj = get(cxt, beanId) ;
if( obj == null ){
Map<String, Object> pvs = new HashMap<String, Object>() ;
pvs.put("xxService", xxService) ; //需要相应的set方法
pvs.put("xxxxxstring", "xxxxxxxxxxxxxxxxxxxxxxx") ;//需要相应的set方法
reg(cxt, beanId, cn.com.xx.xxxBeanServiceImpl/*service的实现类*/, pvs) ;
}
obj = get(cxt, beanId) ;
if( obj == null || !(obj instanceof xxxBeanService/*service接口*/) ){
setErrMsg("未能获取xxxBeanService") ;
return ERROR ;
}
相关文章推荐
- 101. Spring Boot轻松理解动态注入,删除bean【从零开始学Spring Boot】
- 在Spring中,动态注入Bean
- Spring动态注入泛型集合Bean
- 不同作用域(scope)的Spring Bean之间的依赖关系的动态代理注入
- Spring 动态注入javaBean
- Spring中如何动态注入Bean实例教程
- Spring 动态注入javaBean
- Spring中如何动态注入Bean实例教程
- 动态注入Spring中的Bean实例快速指南
- 基于Spring容器Bean的动态注入
- Spring动态的注入Bean对象的实现方式,
- 101. Spring Boot轻松理解动态注入,删除bean【从零开始学Spring Boot】
- SpringBoot中拦截器无法注入Bean的解决办法
- Spring Bean 注入 1 - 构造方法注入,属性注入,自动装配
- Spring注入Bean的几种方式
- spring不依赖注入得到实体bean
- spring给bean注入属性的三种方式
- Bean注入报错:org.springframework.beans.factory.BeanCreationException
- Spring通过配置文件注入bean
- (学习笔记)spring入门之Bean的依赖注入