Spring在代码中获取bean的方法小结
一、通过Spring提供的ContextLoader
WebApplicationContextwac=ContextLoader.getCurrentWebApplicationContext(); wac.getBean(beanID);
这种方式不依赖于servlet,不需要注入的方式。但是需要注意一点,在服务器启动时,Spring容器初始化时,不能通过这种方法获取Spring容器
二、实现接口ApplicationContextAware
定义工具类
publicclassSpringContextUtilimplementsApplicationContextAware{
privatestaticApplicationContextapplicationContext;//Spring应用上下文环境
/**
*实现ApplicationContextAware接口的回调方法,设置上下文环境
*@paramapplicationContext
*@throwsBeansException
*/
publicvoidsetApplicationContext(ApplicationContextapplicationContext)throwsBeansException{
SpringContextUtil.applicationContext=applicationContext;
}
/**
*@returnApplicationContext
*/
publicstaticApplicationContextgetApplicationContext(){
returnapplicationContext;
}
/**
*获取对象
*@paramname
*@returnObject一个以所给名字注册的bean的实例
*@throwsBeansException
*/
publicstaticObjectgetBean(Stringname)throwsBeansException{
returnapplicationContext.getBean(name);
}
/**
*获取类型为requiredType的对象
*如果bean不能被类型转换,相应的异常将会被抛出(BeanNotOfRequiredTypeException)
*@paramnamebean注册名
*@paramrequiredType返回对象类型
*@returnObject返回requiredType类型对象
*@throwsBeansException
*/
publicstaticObjectgetBean(Stringname,ClassrequiredType)throwsBeansException{
returnapplicationContext.getBean(name,requiredType);
}
/**
*如果BeanFactory包含一个与所给名称匹配的bean定义,则返回true
*@paramname
*@returnboolean
*/
publicstaticbooleancontainsBean(Stringname){
returnapplicationContext.containsBean(name);
}
/**
*判断以给定名字注册的bean定义是一个singleton还是一个prototype。
*如果与给定名字相应的bean定义没有被找到,将会抛出一个异常(NoSuchBeanDefinitionException)
*@paramname
*@returnboolean
*@throwsNoSuchBeanDefinitionException
*/
publicstaticbooleanisSingleton(Stringname)throwsNoSuchBeanDefinitionException{
returnapplicationContext.isSingleton(name);
}
/**
*@paramname
*@returnClass注册对象的类型
*@throwsNoSuchBeanDefinitionException
*/
publicstaticClassgetType(Stringname)throwsNoSuchBeanDefinitionException{
returnapplicationContext.getType(name);
}
/**
*如果给定的bean名字在bean定义中有别名,则返回这些别名
*@paramname
*@return
*@throwsNoSuchBeanDefinitionException
*/
publicstaticString[]getAliases(Stringname)throwsNoSuchBeanDefinitionException{
returnapplicationContext.getAliases(name);
}
}
三、配置bean
<!--SpringContextUtil通过代码获取bean--> <beanid="SpringContextUtil"class="org.shaofan.demo.utils.SpringContextUtil"/>
总结
以上就是Spring在代码中获取bean的几种方式,希望本文的内容对大家的学习或者工作能有所帮助,如果有疑问大家可以留言交流。
热门推荐
10 香港老妈结婚祝福语简短
11 毕业立体贺卡祝福语简短
12 简短新年年会祝福语
13 评论小品祝福语大全简短
14 恭喜师兄结婚祝福语简短
15 员工集体辞职祝福语简短
16 高中新生祝福语 简短
17 装修祝福语男生搞笑简短
18 生日开业蛋糕祝福语简短