最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring中如何動態(tài)注入Bean實例教程

 更新時間:2017年12月11日 16:25:42   作者:bladestone  
這篇文章主要給大家介紹了關于Spring中如何動態(tài)注入Bean的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。

前言

在Spring中提供了非常多的方式注入實例,但是由于在初始化順序的不同,基于標注的注入方式,容易出現(xiàn)未被正確注入成功的情況。

本文將介紹一種在實際項目中基于動態(tài)的方式來提取Spring管理的Bean。 下面話不多說了,來一起看看詳細的介紹吧。

一、基于標注的方式注入實例

需要在Bean初始化之時,其依賴的對象必須初始化完畢。如果被注入的對象初始化晚于當前對象,則注入的對象將為null.

1.1 @Autowired

按照類型來加載Spring管理的Bean。默認情況下要求其Bean必須存在。 如果其Bean為null,則可以設置其required屬性為false。具體的詳情,可以參照源代碼:

@Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documentedpublic
@interface Autowired {
/** * Declares whether the annotated dependency is required. *
Defaults to {@code true}.
*/
boolean required() default true;
}

如果需要基于命令來注入Bean,則需要使用@Qualifier來標注名稱,代碼示例如下:

@Autwired
@Qualifier("beanName")
private BeanType beanObj;

應用范圍: 變量, setter方法和構造函數(shù)之上。

來源: Spring框架

1.2 @Inject

由javax.inject.Inject提供,基于類型進行自動裝配,如果需要按照名稱進行轉配,則需要配合使用@Named。這個使用方式和Spring框架提供的@Autowired非常類似。

應用范圍: 變量、setter方法,構造函數(shù)

來源: JSR330規(guī)范 javax擴展包

代碼示例:

@Inject
@Named("beanName")
private BeanType bean;

1.3 @Resource

默認是按照名稱來裝配注入的,只有當找不到與名稱匹配的bean才會按照類型來裝配注入。其有JDK 1.6之后提供的。

應用范圍:可以應用到變量和setter方法之上

來源: JDK 1.6之后提供

代碼使用示例:

@Resource(name="mybeanName")
private BeanType bean;

二、動態(tài)注入的方式

思路: 基于ApplicationContextAware來獲取ApplicationContext的引用,然后基于ApplicationContext進行對象的動態(tài)獲取。

實現(xiàn)代碼如下:

@Component

public class SpringContextUtil implements ApplicationContextAware {
// Spring應用上下文環(huán)境
private static ApplicationContext applicationContext;
/*
* 實現(xiàn)ApplicationContextAware接口的回調方法,設置上下文環(huán)境
*
* @param applicationContext
*/
public void setApplicationContext(ApplicationContext applicationContext) {
SpringContextUtil.applicationContext = applicationContext;
}
/**
* @return ApplicationContext
*/
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
/**
* 獲取對象
*
* @param name
* @return Object
* @throws BeansException
*/
public static Object getBean(String name) throws BeansException {
return applicationContext.getBean(name);
}
}

之后就可以直接在代碼中動態(tài)獲取所需要的Bean實例了:

BeanType bean = SpringContextUtil.getBean("beanName")

是不是非常容易使用呢?

總結

這里總結了在Spring中注入Bean的各種方式,各有優(yōu)劣,大家可以選擇使用。

好了,以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關文章

  • java<<、>>、>>>移位操作方法

    java<<、>>、>>>移位操作方法

    下面小編就為大家?guī)硪黄猨ava<<、>>、>>>移位操作方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • java實現(xiàn)人民幣大小寫轉換方法分享

    java實現(xiàn)人民幣大小寫轉換方法分享

    本文介紹java人民幣數(shù)字大小寫轉換方法,代碼中有注釋,大家直接看代碼吧
    2014-01-01
  • Jmeter3.0發(fā)布!版本更新到底更新了什么

    Jmeter3.0發(fā)布!版本更新到底更新了什么

    Jmeter3.0發(fā)布!版本更新到底更新了什么?這篇文章主要告訴大家Jmeter3.0版本更新了什么,感興趣的小伙伴們可以參考一下
    2016-08-08
  • Spring Security靈活的PasswordEncoder加密方式解析

    Spring Security靈活的PasswordEncoder加密方式解析

    這篇文章主要介紹了Spring Security靈活的PasswordEncoder加密方式解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • spring的幾個重要類和接口(詳解)

    spring的幾個重要類和接口(詳解)

    下面小編就為大家?guī)硪黄猻pring的幾個重要類和接口(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • java動態(tài)構建數(shù)據(jù)庫復雜查詢教程

    java動態(tài)構建數(shù)據(jù)庫復雜查詢教程

    這篇文章主要介紹了java動態(tài)構建數(shù)據(jù)庫復雜查詢的實現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2021-11-11
  • mybatis如何封裝List<String>類型屬性

    mybatis如何封裝List<String>類型屬性

    這篇文章主要介紹了mybatis如何封裝List<String>類型屬性問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Java JDBC批量執(zhí)行executeBatch方法詳解

    Java JDBC批量執(zhí)行executeBatch方法詳解

    這篇文章主要介紹了Java JDBC批量執(zhí)行executeBatch方法詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-08-08
  • 使用Nacos下載、配置、整合項目方式

    使用Nacos下載、配置、整合項目方式

    這篇文章主要介紹了使用Nacos 下載、配置、整合項目方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • 在SpringBoot項目中解決依賴沖突問題的方法

    在SpringBoot項目中解決依賴沖突問題的方法

    在SpringBoot項目中,依賴沖突是一個常見的問題,特別是當項目引入多個第三方庫或框架時,依賴沖突可能導致編譯錯誤、運行時異?;虿豢深A測的行為,本文給大家介紹了如何在SpringBoot項目中解決以來沖突問題的方法,需要的朋友可以參考下
    2024-01-01

最新評論

武山县| 莱州市| 新和县| 汕头市| 康保县| 濮阳市| 聂荣县| 五大连池市| 济阳县| 明星| 黎川县| 韩城市| 闸北区| 荣成市| 凤山县| 德格县| 纳雍县| 循化| 潢川县| 蒙山县| 卢氏县| 宁安市| 法库县| 乌兰浩特市| 屏南县| 黑山县| 玛纳斯县| 上高县| 甘南县| 平遥县| 高碑店市| 喀什市| 江津市| 竹山县| 东乡| 乌什县| 诏安县| 河津市| 黎平县| 济源市| 顺义区|