这篇文章将为大家详细讲解有关春天中动态注入Bean的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
<强>一、基于标注的方式注入实例强>
需要在Bean初始化之时,其依赖的对象必须初始化完毕。如果被注入的对象初始化晚于当前对象,则注入的对象将为null。
<强> 1.1 @ autowired 强>
按照类型来加载弹簧管理的Bean。默认情况下要求其豆必须存在。如果其Bean为null,则可以设置其所需属性为假,具体的详情,可以参照源代码:
@Target ({ElementType.METHOD, ElementType.CONSTRUCTOR,还以为,ElementType.PARAMETER, ElementType.FIELD,, ElementType.ANNOTATION_TYPE}) @Retention (RetentionPolicy.RUNTIME) @Documentedpublic @interface Autowired  {/* *,*,Declares whether 从而annotated dependency is 只需要* Defaults 用{@code 真正的}。 */boolean 需要(),default 真实; }
如果需要基于命令来注入Bean,则需要使用@ qualifier来标注名称,代码示例如下:
@Autwired @ qualifier (“beanName") private BeanType  beanObj;
应用范围:变量,setter方法和构造函数之上。
春框架
<强> 1.2 @ inject 强>
由javax.inject。注入提供,基于类型进行自动装配,如果需要按照名称进行转配,则需要配合使用@ named。这个使用方式和弹簧框架提供的@ autowired非常类似。
应用范围:变量,setter方法,构造函数
JSR330规范javax扩展包
代码示例:
@ Inject @ named (“beanName") private BeanType 豆类;
1.3 <强> @ 强>
默认是按照名称来装配注入的,只有当找不到与名称匹配的bean才会按照类型来装配注入。其有JDK 1.6之后提供的。
应用范围:可以应用到变量和setter方法之上
JDK 1.6之后提供
代码使用示例:
@ resource (name=癿ybeanName") private BeanType 豆类;
<强>二、动态注入的方式强>
思路:基于ApplicationContextAware来获取ApplicationContext的引用,然后基于ApplicationContext进行对象的动态获取。
实现代码如下:
@ component public class  SpringContextUtil implements ApplicationContextAware  {//,春天应用上下文环境 private static  ApplicationContext applicationContext;/* *,实现ApplicationContextAware接口的回调方法,设置上下文环境 * *,@param applicationContext */public void  setApplicationContext (ApplicationContext applicationContext), { 时间=SpringContextUtil.applicationContext applicationContext; }/* * *,@return ApplicationContext */public static  ApplicationContext getApplicationContext (), { return applicationContext; }/* * *,获取对象 * *,@param 名字 *,@return 对象 *,@throws BeansException */public static  Object getBean (String 名称),throws BeansException { return applicationContext.getBean(名称); } }
之后就可以直接在代码中动态获取所需要的Bean实例了:
BeanType bean =, SpringContextUtil.getBean (“beanName")
关于“春中动态注入Bean的方法”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看的到。