国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 Java java教程 Spring IOC容器

Spring IOC容器

Aug 19, 2017 pm 01:46 PM
spring 容器

1.Spring框架簡介

什麼是Spring?

Spring是一個開源的輕量級的應(yīng)用開發(fā)框架,其目的是用於簡化企業(yè)級應(yīng)用程式開發(fā),減少侵入

Spring提供的IOC和AOP應(yīng)用,可以將元件的耦合度降至最低,即解耦,便於系統(tǒng)日後的維護和升級

Spring為系統(tǒng)提供了一個整體的解決方案,開發(fā)者可以利用它本身提供的功能外,也可以與第三方框架和技術(shù)整合應(yīng)用,可以自由選擇採用哪種技術(shù)進行開發(fā)

2.容器和Bean管理

Spring容器簡介

#在Spring中,任何java類別和javaBean都被當成Bean處理,這些Bean透過容器管理和應(yīng)用程式

Spring容器實作了IOC和AOP機制,這些機制可以簡化Bean物件建立和Bean物件之間的解耦

Spring容器有BeanFactory和ApplicationContext兩種類型

(什麼是javaBean:一種簡單規(guī)範的java物件;何時使用Spring:當需要管理javaBean物件時候就可以使用,Spring是最簡??潔的物件管理方案之一)

Spring容器的實例化

ApplicationContext繼承自BeanFactory接口,擁有更多的企業(yè)級方法,推薦使用該類型,實例化方法如下:

# //載入檔案系統(tǒng)中的設(shè)定檔實例化

String conf = “C:\applicationContext.xml”;

ApplicationContext ac = new FileSystemXmlApplicationContext(conf);

//載入工程classpath下的設(shè)定檔實例化

String conf = “applicationContext.xml”;

ApplicationContext ac = new ClassPathXmlApplicationContext(conf);

## Spring容器的使用

從本質(zhì)上講,BeanFactory和ApplicationContext僅僅只是一個維護Bean定義以及相互依賴關(guān)係的高階工廠介面。透過BeanFactory和ApplicationContext我們可以存取bean定義

首先在容器設(shè)定檔applicationContext.xml中加入Bean定義

然後在建立BeanFactory和ApplicationContext容器物件後,呼叫g(shù)etBean()方法取得Bean的實例即可[getBean("識別碼")]

Bean的實例化

Spring容器建立Bean物件的方法有以下三種:#-用建構(gòu)器來實例化

#

(id或name屬性用來指定Bean名稱,用來從Spring中尋找這個Bean物件;class用來指定Bean類型,會自動呼叫無參數(shù)建構(gòu)器建立物件)-使用靜態(tài)工廠方法實例化

#

(id屬性用於指定Bean名稱,class屬性用於指定工廠類型,factory-method屬性用於指定工廠中建立Bean物件的方法,必須用static修飾的方法)-使用實例工廠方法實例化

##

#?(id用於指定Bean名稱,factory-bean屬性用於指定工廠Bean物件,factory-method屬性用於指定工廠中建立Bean物件的方法)

(將物件建立規(guī)則告訴Spring,Spring會幫你去建立物件;基於設(shè)定和預設(shè)規(guī)則,減少了程式碼的書寫)

?Bean的命名

Bean的名稱:

在Spring容器中,每個Bean都需要有一個名字(即識別符),該名字可以用元素的id或name屬性指定;id屬性比name嚴格,要求具有唯一性,不允許用"/"等特殊字元

Bean的別名

#為已定義好的Bean,再增加另一個名字引用,可以使用

Bean的作用域:

#Spring容器在實例化Bean時,可以建立下列作用域的Bean物件

1、singleton作用域


在每個Spring IOC容器中一個bean定義對應(yīng)一個物件實例,預設(shè)項目
設(shè)定實例:




2、prototype


一個bean定義對應(yīng)多個物件實例
設(shè)定實例:




3、request

request表示該針對每一次HTTP請求都會產(chǎn)生一個新的bean,同時該bean僅在當前HTTP request內(nèi)有效


# request、session、global session使用的時候,首先要在初始化web的web.xml中做如下配置:


如果你使用的是Servlet 2.4及以上的web容器,那麼你只需要在web應(yīng)用的XML宣告檔web.xml中增加下述ContextListener即可:
...org.springframework.web.context.request. RequestContextListener...

如果是Servlet2.4以前的web容器,那麼你要使用一個javax.servlet.Filter的實作:
.. requestContextFilter org.springframework.web.filter.RequestContextFilter<ter-class>org.springframework.web.filter.RequestContextFilter requestContextFilter /*/*...< ;/web-app>
接著既可以配置bean的作用域了:
4、session



session作用域表示該針對每一次HTTP請求都會產(chǎn)生一個新的bean,同時該bean只在目前HTTP session內(nèi)有效(在一個HTTPSession中,一個bean定義對應(yīng)一個實例,僅限於Web環(huán)境)
配置實例:
和request配置實例??的前提一樣,配置好web啟動文件就可以如下配置:
5、global session



在一個全域的HTTPSession中,一個bean定義對應(yīng)一個實例,僅在基於portlet的Web應(yīng)用中才有意義,Portlet規(guī)範定義了全域Session的概念

設(shè)定實例:

和request設(shè)定實例的前提一樣,設(shè)定好web啟動檔就可以如下設(shè)定:

(上面的Bean作用域,可以透過定義的scope屬性指定)

Bean的生命週期回呼

指定初始化回呼方法:

#

指定銷毀回呼方法,僅適用於singleton模式的bean:#########

##1 ##在頂級的元素中的default-init-method屬性,可以為容器所有指定初始化回調(diào)方法

  

#

在頂級的元素中的default-destroy-method屬性,可以為容器所有指定銷毀回呼方法

#

  

##

Bean延遲實例化

在ApplicationContext實作的預設(shè)行為就是在啟動時將所有singleton bean提前進行實例化#如果不想讓一個singleton bean在ApplicationContext初始化時被提前實例化,可以使用元素的lazy-init = "true" 屬性改變一個延遲初始化bean將在第一次被用到時實例化

在頂級的元素元素中的default-lazy-init屬性,可以為容器所有指定延遲實例化特性

指定bean依賴關(guān)係

當一個bean對另一個bean有依賴關(guān)係時,可以利用元素的depends-on屬性指定

當一個bean對多個bean存在依賴關(guān)係時,depends-on屬性可以指定多個bean名,用逗號隔開

3.容器的IOC應(yīng)用

IOC概念#########IOC全名為Inversion of? Control,被翻譯為控制反轉(zhuǎn);######IOC是指程式中物件的取得方式發(fā)生反轉(zhuǎn),由最初的new方式創(chuàng)建,轉(zhuǎn)變?yōu)橛傻谌娇蚣軇?chuàng)建,注入。第三方框架一般是透過配置方式指定注入哪一個具體實現(xiàn),從而降低了物件之間的耦合度######IOC按實現(xiàn)方法不同,可以分為依賴注入DI和依賴查找兩種### ###Spring容器是採用DI方式實現(xiàn)了IOC控制,IOC是Spring容器的基礎(chǔ)和核心##########DI概念#########DI全名為Dependency? Injection,被譯為依賴注入######DI的基本原理就是將一起工作具有關(guān)係的對象,透過建構(gòu)方法參數(shù)或方法參數(shù)傳入建立聯(lián)繫,因此容器的工作就是在創(chuàng)建bean時注入那些依賴關(guān)係#### ##IOC是一種思想,而DI是實現(xiàn)IOC的主要技術(shù)途徑######DI主要有兩種注入方式,即Setter注入和建構(gòu)器注入#########Setterr注入# ##############透過呼叫無參考構(gòu)造器或無參音static工廠方法實例化bean之後,呼叫該bean的setter方法,即可實現(xiàn)setter方式的注入##### #######public class JDBCDataSource{######  private String driver;######  public void setDriver(String driver){######    try{{  

  

  

  

建構(gòu)器注入

#基於建構(gòu)器的注入是透過呼叫帶參數(shù)的構(gòu)造器來實現(xiàn)的,容器在bean被實例化的時候,根據(jù)參數(shù)類型執(zhí)行對應(yīng)的建構(gòu)器

public class OracleUserDAO implements UserDAO{

#  private JDBCDataSource dataSource;

  public OracleUserDAO(JDBCDataSource dataSource){

    this.dataSource = dataSource;

  }

 /

#  }

 //其他程式碼.....##//其他程式碼.....##}

按建構(gòu)器參數(shù)索引指定注入

#

  

  

  

  

#

  < ;constructor-arg index = "0"? ref = "dataSource"/>

#

#自動組裝

#Spring? IOC容器可以自動組裝(autowire)相互協(xié)作bean之間的關(guān)聯(lián)關(guān)係,autowire可以針對單一bean進行設(shè)置,autowire的方便之處在於減少xml的注入配置

在xml設(shè)定檔中,可以在< ;bean/>元素中使用autowire屬性指定自動組裝規(guī)則,一共有五種類型值

#屬性值為no:

#禁止自動組裝,預設(shè)值;

屬性值為byName:根據(jù)屬性名稱自動裝配,此選項將檢查容器並根據(jù)名字查找與屬性完全一致的bean,並將其與屬性自動裝配;

屬性值為byType:如果容器中存在一個與指定屬性類型相同的bean,那麼將與該屬性自動組裝;

屬性值為constructor: 與byType的方式類似,不同之處在於它應(yīng)用於建構(gòu)器參數(shù);

屬性值為autodetect:

透過bean類別來決定使用constructor還是byType方式進行自動裝配,如果發(fā)現(xiàn)預設(shè)的建構(gòu)器,那麼將使用byType方式

設(shè)定範例:

  

#

#上述配置,在UserService中如果存在接收UserDao類型的方法Setter方法,Spring就可以自動將userDAO物件注入進去

#########

以上是Spring IOC容器的詳細內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔相應(yīng)的法律責任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

編程新範式,當Spring Boot遇上OpenAI 編程新範式,當Spring Boot遇上OpenAI Feb 01, 2024 pm 09:18 PM

2023年,AI技術(shù)已成為熱門話題,對各行業(yè)產(chǎn)生了巨大影響,程式設(shè)計領(lǐng)域尤其如此。人們越來越認識到AI技術(shù)的重要性,Spring社群也不例外。隨著GenAI(GeneralArtificialIntelligence)技術(shù)的不斷進步,簡化具備AI功能的應(yīng)用程式的創(chuàng)建變得至關(guān)重要和迫切。在這個背景下,"SpringAI"應(yīng)運而生,旨在簡化開發(fā)AI功能應(yīng)用程式的過程,使其變得簡單直觀,避免不必要的複雜性。透過"SpringAI",開發(fā)者可以更輕鬆地建立具備AI功能的應(yīng)用程序,將其變得更加易於使用和操作

利用Spring Boot以及Spring AI建構(gòu)生成式人工智慧應(yīng)用 利用Spring Boot以及Spring AI建構(gòu)生成式人工智慧應(yīng)用 Apr 28, 2024 am 11:46 AM

Spring+AI作為行業(yè)領(lǐng)導者,透過其強大、靈活的API和先進的功能,為各種行業(yè)提供了領(lǐng)先性的解決方案。在本專題中,我們將深入探討Spring+AI在各領(lǐng)域的應(yīng)用範例,每個案例都將展示Spring+AI如何滿足特定需求,實現(xiàn)目標,並將這些LESSONSLEARNED擴展到更廣泛的應(yīng)用。希望這個專題能對你有所啟發(fā),更深入地理解和利用Spring+AI的無限可能。 Spring框架在軟體開發(fā)領(lǐng)域已經(jīng)有超過20年的歷史,自SpringBoot1.0版本發(fā)布以來已有10年?,F(xiàn)在,無人會質(zhì)疑,Spring

spring編程式事務(wù)有哪些實作方式 spring編程式事務(wù)有哪些實作方式 Jan 08, 2024 am 10:23 AM

spring編程式事務(wù)的實作方式:1、使用TransactionTemplate;2、使用TransactionCallback和TransactionCallbackWithoutResult;3、使用Transactional註解;4、使用TransactionTemplate和@Transactional結(jié)合使用;5、自訂事務(wù)管理器。

華為、浪潮等單位合作創(chuàng)建的開源容器鏡像中心,AtomHub,宣布正式開放公測,可穩(wěn)定下載國內(nèi)服務(wù) 華為、浪潮等單位合作創(chuàng)建的開源容器鏡像中心,AtomHub,宣布正式開放公測,可穩(wěn)定下載國內(nèi)服務(wù) Jan 02, 2024 pm 03:54 PM

華為官方消息顯示,開放原子開發(fā)者大會以「一切為了開發(fā)者」為主題,在無錫舉辦了兩天,時間為12月16日至17日會上,由開放原子開源基金會主導,華為、浪潮、DaoCloud、諧雲(yún)、青雲(yún)、颶風引擎以及OpenSDV開源聯(lián)盟、openEuler社群、OpenCloudOS社群等成員單位共同發(fā)起建置的AtomHub可信任鏡像中心正式開放公測。 AtomHub秉承共建、共治、共享的理念,旨在為開源組織和開發(fā)者提供中立、開放共建的可信開源容器鏡像中心。鑑於DockerHub等鏡像倉庫的不穩(wěn)定性和不可控性,以及一些

Spring如何設(shè)定事務(wù)隔離級別 Spring如何設(shè)定事務(wù)隔離級別 Jan 26, 2024 pm 05:38 PM

Spring設(shè)定事務(wù)隔離等級的方法:1、使用@Transactional註解;2、在Spring設(shè)定檔中設(shè)定;3、使用PlatformTransactionManager;4、在Java配置類別中設(shè)定。詳細介紹:1、使用@Transactional註解,在需要進行事務(wù)管理的類別或方法上加入@Transactional註解,並在屬性中設(shè)定隔離等級;2、在Spring設(shè)定檔等等。

詳解Spring中的Bean取得方式 詳解Spring中的Bean取得方式 Dec 30, 2023 am 08:49 AM

Spring中Bean取得方式詳解在Spring框架中,Bean的取得是非常重要的一環(huán)。在應(yīng)用程式中,我們經(jīng)常需要使用依賴注入或動態(tài)來取得Bean的實例。本文將詳細介紹Spring中Bean的取得方式,並給出具體的程式碼範例。透過@Component註解取得Bean@Component註解是Spring框架中常用的註解之一。我們可以透過在類別上新增@Compone

spring如何設(shè)定檔 spring如何設(shè)定檔 Jan 18, 2024 pm 03:53 PM

spring設(shè)定檔的步驟:1、建立XML設(shè)定檔;2、新增必要的依賴;3、設(shè)定資料來源;4、定義bean;5、設(shè)定其他元件;6、注入依賴;7、設(shè)定環(huán)境;8、啟用自動組裝;9、部署應(yīng)用程式;10、啟動應(yīng)用程式。詳細介紹:1、建立XML設(shè)定文件,在專案的資源目錄下建立一個XML文件,這個文件將包含Spring的設(shè)定資訊;2、加入必要的依賴等等。

Spring Security權(quán)限控制框架使用指南 Spring Security權(quán)限控制框架使用指南 Feb 18, 2024 pm 05:00 PM

在後臺管理系統(tǒng)中,通常需要存取權(quán)限控制,以限制不同使用者對介面的存取能力。如果使用者缺乏特定權(quán)限,則無法存取某些介面。本文將用waynboot-mall專案舉例,跟大家介紹常見後管系統(tǒng)如何引入權(quán)限控制框架SpringSecurity。大綱如下:waynboot-mall專案網(wǎng)址:https://github.com/wayn111/waynboot-mall一、什麼是SpringSecuritySpringSecurity是一個基於Spring框架的開源項目,旨在為Java應(yīng)用程式提供強大且靈活的安

See all articles