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 50多岁生日简短祝福语
13 安徽疫情祝福语简短英语
14 农民朋友发财祝福语简短
15 对生活祝福语简短精辟
16 搬家词简短祝福语朋友
17 女神结婚快乐祝福语简短
18 文学短句祝福语大全简短