成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Spring 核心 Ioc容器與Bean

qingshanli1988 / 2176人閱讀

摘要:多例類型,表示每次從容器中都會獲取到一個對應(yīng)定義全新的實(shí)例。僅適用于環(huán)境下的,表示每一個生命周期內(nèi)會有一個多帶帶的實(shí)例,即每一個請求都會擁有一個多帶帶的實(shí)例。將單個定義范圍限定為的生命周期。僅在的上下文中有效。

注意我的 Spring 版本是 5.1.2.RELEASE, 并且主要使用注解配置. 如果你需要使用 xml 配置, 我想這篇文章應(yīng)該不適合你.
IoC容器

IoC就是控制反轉(zhuǎn), 也叫依賴注入(DI).

比如, 我們現(xiàn)在有 A B 兩個類, A 類依賴 B 類在容器在創(chuàng)建 Bean(對象) 的時候, 會注入這些依賴也就是將 B 對象注入到 A 對象中.

依賴注入方式 構(gòu)造方法注入
private TestService testService;

@Autowired
public ScsController(TestService testService){
    this.testService = testService;
}
通過屬性注入
@Autowired
private TestService testService;

不管是根據(jù)構(gòu)造方法注入還是通過屬性注入 @Autowired 注解都是必不可少的. @Autowired 注解默認(rèn)是按照類型進(jìn)行注入的, 如果沒有出現(xiàn)指定類型 Bean 時(TestService Bean) 測可以設(shè)置 required=false 表示在用到的時候進(jìn)行注入.

有些情況下我們可能需要名稱進(jìn)行注入, 可以配合 @Qualifier 注解一起使用.

@Autowired
@Qualifier("testService")
private TestService testService;
Bean

在 Spring 中, bean 是一個由 Spring IoC 容器實(shí)例化, 組裝和管理的對象.

容器幫我們管理的 Bean 都表示一個 BeanDefinition 對象, 這個對象的主要作用就是幫我們來描述 Bean 的 class 類型、構(gòu)造函數(shù)參數(shù)列表、scope、屬性、依賴項(xiàng)等等. 當(dāng)容器注冊 Bean 的時候就會使用 BeanDefinitionRegistry 來幫我們進(jìn)行注冊; 當(dāng)我們?nèi)绻獜娜萜髦蝎@取一個 Bean 時, 則需要使用 BeanFactory.

也就是說 BeanDefinition 就是用來描述 Bean, BeanDefinitionRegistry 用來注冊和管理BeanDefinition, BeanFactory 用來管理 Bean.

要注意的是 BeanFactory 采用延遲初始化策略: 只有當(dāng)訪問容器中的某個對象時, 才對該對象進(jìn)行初始化和依賴注入操作.

還有一個比它更高級的叫做 ApplicationContext 除了具有 BeanFactory 的所有能力之外, 還提供對事件監(jiān)聽機(jī)制以及國際化的支持等.

ApplicationContext 構(gòu)建在 BeanFactory 上, 并且在容器啟動時全部完成初始化和依賴注入操作.
Bean 作用范圍(scope)
范圍 說明
singleton 這是默認(rèn)Scope,表示在整個bean容器中或者說是整個應(yīng)用中只會有一個實(shí)例。
prototype 多例類型,表示每次從bean容器中都會獲取到一個對應(yīng)bean定義全新的實(shí)例。
request 僅適用于Web環(huán)境下的ApplicationContext,表示每一個HttpRequest生命周期內(nèi)會有一個多帶帶的實(shí)例,即每一個Http請求都會擁有一個多帶帶的實(shí)例。
session 僅適用于Web環(huán)境下的ApplicationContext,表示每一個HttpSession生命周期內(nèi)會有一個多帶帶的實(shí)例,即每一個HttpSession下都會擁有一個多帶帶的實(shí)例,即每一個用戶都將擁有一個多帶帶的實(shí)例。
application 僅適用于Web環(huán)境下的ApplicationContext,表示在ServletContext生命周期內(nèi)會擁有一個多帶帶的實(shí)例,即在整個ServletContext環(huán)境下只會擁有一個實(shí)例。
websocket 將單個bean定義范圍限定為WebSocket的生命周期。 僅在Web Spring ApplicationContext的上下文中有效。

可以通過注解 @Scope 進(jìn)行指定

@Component
@Scope("prototype")
public class Hello {
    
}

如果作用范圍是 request session application 則可以使用相應(yīng)的 @RequestScope @SessionScope @ApplicationScope 注解.

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/72450.html

相關(guān)文章

  • Spring 的基本應(yīng)用——IoC 和 AOP

    摘要:的兩大核心機(jī)制是控制反轉(zhuǎn)和面向切面編程,對于初學(xué)者來講,搞清楚這兩個核心機(jī)制就掌握了的基本應(yīng)用。配置對象張三添加標(biāo)簽對應(yīng)屬性名,是屬性的值。若包含特殊字符,比如張三,使用張三進(jìn)行配置,如下所示。 前言 對于任何一個 Java 開發(fā)人員,Spring 的大名一定如雷貫耳,在行業(yè)中可謂是無人不知、無人不曉,說它是 Java 領(lǐng)域第一框架毫不為過。 showImg(https://segme...

    DirtyMind 評論0 收藏0
  • Spring入門看這一篇就夠了

    摘要:甲乙交易活動不需要雙方見面,避免了雙方的互不信任造成交易失敗的問題。這就是的核心思想。統(tǒng)一配置,便于修改。帶參數(shù)的構(gòu)造函數(shù)創(chuàng)建對象首先,就要提供帶參數(shù)的構(gòu)造函數(shù)接下來,關(guān)鍵是怎么配置文件了。 前言 前面已經(jīng)學(xué)習(xí)了Struts2和Hibernate框架了。接下來學(xué)習(xí)的是Spring框架...本博文主要是引入Spring框架... Spring介紹 Spring誕生: 創(chuàng)建Spring的...

    superw 評論0 收藏0
  • 零基礎(chǔ)帶你看Spring源碼——IOC控制反轉(zhuǎn)

    摘要:依賴注入是向某個類或方法注入一個值,其中所用到的原理就是控制反轉(zhuǎn)。但發(fā)現(xiàn)更多時間是在調(diào)和的源碼。里面就是從中取出這個,完成控制反轉(zhuǎn)的。控制反轉(zhuǎn)的優(yōu)點(diǎn)最后來以我個人觀點(diǎn)談?wù)効刂品崔D(zhuǎn)的優(yōu)點(diǎn)吧。控制反轉(zhuǎn)為了降低項(xiàng)目耦合,提高延伸性。 本章開始來學(xué)習(xí)下Spring的源碼,看看Spring框架最核心、最常用的功能是怎么實(shí)現(xiàn)的。網(wǎng)上介紹Spring,說源碼的文章,大多數(shù)都是生搬硬推,都是直接看來的...

    wing324 評論0 收藏0
  • Spring框架之我見(三)——IOC、AOP

    摘要:模塊負(fù)責(zé)的所有面向切面的功能??偨Y(jié)的統(tǒng)一管理,降低了對象之間的耦合對主流的框架提供了很好的集成支持提供眾多組件,事務(wù)管理,等具有高度可開放性,開發(fā)者可以自由選擇部分或全部主要使用工廠模式和代理模式。 聊完了Spring框架中最重要的兩種設(shè)計模式,我們來看一下Spring框架的模塊和結(jié)構(gòu)圖。 Spring框架的結(jié)構(gòu) 下圖是Spring官方給出的Spring框架的結(jié)構(gòu)圖。 showImg(...

    khs1994 評論0 收藏0
  • 徒手?jǐn)]框架--實(shí)現(xiàn)IoC

    摘要:從而能夠進(jìn)一步深入了解框架。至此我們框架開發(fā)完成。雖然說閱讀源碼是了解框架的最終手段。但是框架作為一個生產(chǎn)框架,為了保證通用和穩(wěn)定,源碼必定是高度抽象,且處理大量細(xì)節(jié)。下一篇文章應(yīng)該會是徒手?jǐn)]框架實(shí)現(xiàn)。 原文地址:https://www.xilidou.com/2018/... Spring 作為 J2ee 開發(fā)事實(shí)上的標(biāo)準(zhǔn),是每個Java開發(fā)人員都需要了解的框架。但是Spring 的...

    rottengeek 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<