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

Spring核心之IOC與bean超詳細(xì)講解

 更新時(shí)間:2022年10月28日 11:05:22   作者:showswoller  
IOC-Inversion of Control,即控制反轉(zhuǎn)。它不是什么技術(shù),而是一種設(shè)計(jì)思想。這篇文章將為大家介紹一下Spring控制反轉(zhuǎn)IOC的原理,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

前言

Spring是一個(gè)開(kāi)源框架 它能夠降低開(kāi)發(fā)企業(yè)應(yīng)用程序的復(fù)雜性 它以IOC(控制反轉(zhuǎn))和AOP(面向切面編程)兩種先進(jìn)的技術(shù)為基礎(chǔ) 完美地簡(jiǎn)化了企業(yè)級(jí)開(kāi)發(fā)的復(fù)雜度

一、Spring的簡(jiǎn)介和獲取

Spring有七大模塊

1:核心模塊

Spring Core模塊是Spring的核心容器 它實(shí)現(xiàn)了IOC模式 提供了Spring框架的基礎(chǔ)功能,在模塊中包含最重要的BeanFactory類(lèi)是Spring的核心類(lèi) 負(fù)責(zé)對(duì)JavaBean的配置與管理

2:Context模塊

Spring Context模塊繼承BeanFactory類(lèi)并且添加了事件處理 國(guó)際化 資源裝載 透明裝載等功能

3:AOP模塊

Spring集成了所有AOP功能 通過(guò)事務(wù)管理可以使任意Spring管理的對(duì)象AOP化

4:DAO模塊

提供了JDBC的抽象層 簡(jiǎn)化了數(shù)據(jù)庫(kù)廠(chǎng)商的異常錯(cuò)誤

5:O/R模塊

提供了對(duì)現(xiàn)有ORM框架的支持

6:Web模塊

Spring Web模塊建立在Spring Context基礎(chǔ)之上 它提供了Servlet監(jiān)聽(tīng)器的Context和Web應(yīng)用的上下文

7:MVC模塊

Spring Web MVC模塊建立在Spring核心功能之上 使得它擁有Spring框架的所有特性

Spring的獲取

Spring官網(wǎng)

Spring內(nèi)置了日志組件log4.jar 所以在正式使用Spring之前需要對(duì)log4j進(jìn)行簡(jiǎn)單的配置

在項(xiàng)目的src根目錄下創(chuàng)建log4j.properties屬性文件 代碼如下

log4j.rootLogger=WARN,stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d%p[[%c]-%m%n

Spring配置結(jié)構(gòu)如下

使用BeanFactory管理Bean

以裝載Bean為例 代碼如下

Resource resource=new ClassPathResource("applicationContext.xml");
BeanFactory factory=new XmlBeanFactory(resource);
Test test=(Test)factory.getBean("test");

AplicationContext的應(yīng)用

在Spring中大多采用AplicationContext容器來(lái)開(kāi)發(fā)企業(yè)級(jí)的程序 接下來(lái)介紹它的三個(gè)實(shí)現(xiàn)類(lèi)

1:ClassPathXmlApplicationContext類(lèi)

它從當(dāng)前類(lèi)路徑中檢索配置文件并裝載它來(lái)創(chuàng)建容器的實(shí)例

ApplicationContext context=new ClassPathXmlApplicationContext(String configLocation);

2:FileSystemXmlApplicationContext類(lèi)

它和上面的區(qū)別在于讀取Spring配置文件的方式 它不再?gòu)念?lèi)路徑中獲取配置文件 而是通過(guò)參數(shù)指定配置文件的位置

ApplcationContext context=new FileSystemXmlApplicationContext(String configLocation);

4:WebApplicationContext類(lèi)

它是Spring的Web應(yīng)用容器

二、依賴(lài)注入與IOC

什么是控制反轉(zhuǎn)與依賴(lài)注入?

IOC 控制反轉(zhuǎn) 它使程序組件或類(lèi)之間盡量形成一種松耦合的結(jié)構(gòu),開(kāi)發(fā)者在使用類(lèi)的實(shí)例之前,需要先創(chuàng)建類(lèi)的實(shí)例,但是IOC將創(chuàng)建實(shí)例的任務(wù)交給IOC容器,這樣開(kāi)發(fā)應(yīng)用代碼時(shí)只需要直接使用類(lèi)的實(shí)例 這就是IOC

依賴(lài)注入有三種形式 Spring支持后兩種

1、接口注入

基于接口將調(diào)用與實(shí)現(xiàn)分離

2、Setter注入

基于JavaBean的Setter方法為屬性賦值 在實(shí)際開(kāi)發(fā)中得到了最廣泛的應(yīng)用

public class User{
private String name;
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
}

3、構(gòu)造器注入

基于構(gòu)造方法為屬性賦值 容器通過(guò)調(diào)用類(lèi)的構(gòu)造方法 將其所需的依賴(lài)關(guān)系注入其中

public class User{
private String name;
public User(String name){
this.name=name;
}
}

bean的配置

<bean id="test" class="com.mr.Test"/>
id屬性為bean的名稱(chēng) class屬性為對(duì)應(yīng)的類(lèi)名 

引用其他的bean

在Spring中可以通過(guò)配置文件使用<ref>元素引用其他的JavaBean的實(shí)例對(duì)象

<ref local="user"/>

三、自動(dòng)裝配

<bean>元素的autowise屬性負(fù)責(zé)自動(dòng)裝備<bean>標(biāo)簽定義的JavaBaen的屬性 這樣做可以省去很多配置JavaBean屬性的標(biāo)簽代碼

1、按Bean名稱(chēng)裝配

<bean>元素的byname屬性以屬性名區(qū)分自動(dòng)裝配,在容器中尋找與JavaBean的屬性名相同的JavaBean并將其自動(dòng)裝配到JavaBean中

<bean auotwise="byName" id="printInfo" class="com.mr.user.PringInfo"/>

2、按bean類(lèi)型裝配

Spring以bean類(lèi)型區(qū)分自動(dòng)裝配 容器會(huì)自動(dòng)尋找與JavaBean屬性類(lèi)型相同的JavaBean的定義 并將其注入到需要自動(dòng)裝配的JavaBean中

<bean auotwise="byType" id="printInfo" class="com.mr.user.PringInfo"/>

四、bean的作用域

在Spring中,那些組成應(yīng)用的主題及由Spring IOC容器所管理的對(duì)象被稱(chēng)為bean,簡(jiǎn)單地講,bean就是由Spring容器初始化,裝備及被管理的對(duì)象

1、singleton的作用域

當(dāng)Spring中一個(gè)bean作用域?yàn)閟ingleton時(shí),那么Spring IOC容器中只會(huì)存在一個(gè)共享的該bean實(shí)例,并且所有對(duì)該bean的引用 只要id與該bean定義相匹配,則只會(huì)返回bean的單一實(shí)例

<bean id="test" class="com.mr.Test"/>
<bean id="test" class="com.mr.Test"/ singleton="true"/>
<bean id="test" class="com.mr.Test"/scope="singleton"/>

2、prototype作用域

prototype作用域的bean會(huì)導(dǎo)致在每次對(duì)該bean請(qǐng)求時(shí)都會(huì)創(chuàng)建一個(gè)新的bean實(shí)例,

對(duì)所有有狀態(tài)的bean應(yīng)該使用prototype作用域 無(wú)狀態(tài)的bean應(yīng)該使用singleton作用域

<bean id="test" class="com.mr.Test" singleton="false"/>
<bean id="test" class="com.mr.Test" scope="prototype"/>

到此這篇關(guān)于Spring核心之IOC與bean超詳細(xì)講解的文章就介紹到這了,更多相關(guān)Spring IOC與bean內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java中Hibernate面試知識(shí)點(diǎn)整理

    java中Hibernate面試知識(shí)點(diǎn)整理

    在本篇文章里小編給大家整理的是一篇關(guān)于java中Hibernate面試知識(shí)點(diǎn)整理內(nèi)容,有興趣的朋友們可以學(xué)習(xí)參考下。
    2021-01-01
  • Java基礎(chǔ)語(yǔ)法:邏輯控制

    Java基礎(chǔ)語(yǔ)法:邏輯控制

    下面小編就為大家?guī)?lái)一篇Java邏輯控制的基礎(chǔ)文章。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2021-08-08
  • Java打印流原理及實(shí)例詳解

    Java打印流原理及實(shí)例詳解

    這篇文章主要介紹了Java打印流原理及實(shí)例詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • java版簡(jiǎn)單的猜數(shù)字游戲?qū)嵗a

    java版簡(jiǎn)單的猜數(shù)字游戲?qū)嵗a

    猜數(shù)字游戲是一款經(jīng)典的游戲,該游戲說(shuō)簡(jiǎn)單也很簡(jiǎn)單,說(shuō)不簡(jiǎn)單確實(shí)也很難,那么下面這篇文章主要給大家介紹了java版簡(jiǎn)單的猜數(shù)字游戲的相關(guān)資料,文中給出了詳細(xì)的實(shí)現(xiàn)分析和示例代碼供大家參考學(xué)習(xí),需要的朋友們下面來(lái)一起看看吧。
    2017-05-05
  • Java由淺入深通關(guān)抽象類(lèi)與接口下

    Java由淺入深通關(guān)抽象類(lèi)與接口下

    在類(lèi)中沒(méi)有包含足夠的信息來(lái)描繪一個(gè)具體的對(duì)象,這樣的類(lèi)稱(chēng)為抽象類(lèi),接口是Java中最重要的概念之一,它可以被理解為一種特殊的類(lèi),不同的是接口的成員沒(méi)有執(zhí)行體,是由全局常量和公共的抽象方法所組成,本文給大家介紹Java抽象類(lèi)和接口,感興趣的朋友一起看看吧
    2022-04-04
  • Java8新日期時(shí)間API的20個(gè)使用示例

    Java8新日期時(shí)間API的20個(gè)使用示例

    這篇文章主要介紹了Java8新日期時(shí)間API的20個(gè)使用示例,為了學(xué)習(xí)Java 8的這個(gè)新庫(kù),這里我創(chuàng)建了20個(gè)以任務(wù)為導(dǎo)向的例子,需要的朋友可以參考下
    2015-03-03
  • Java常用工具類(lèi)庫(kù)——Hutool的使用簡(jiǎn)介

    Java常用工具類(lèi)庫(kù)——Hutool的使用簡(jiǎn)介

    這篇文章主要介紹了Java常用工具類(lèi)庫(kù)——Hutool的使用簡(jiǎn)介,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下
    2021-04-04
  • SpringCloud HystrixDashboard服務(wù)監(jiān)控詳解

    SpringCloud HystrixDashboard服務(wù)監(jiān)控詳解

    Hystrix Dashboard 是Spring Cloud中查看Hystrix實(shí)例執(zhí)行情況的一種儀表盤(pán)組件,支持查看單個(gè)實(shí)例和查看集群實(shí)例,本文將對(duì)其服務(wù)監(jiān)控學(xué)習(xí)
    2022-11-11
  • 使用mybatis插件PageHelper實(shí)現(xiàn)分頁(yè)效果

    使用mybatis插件PageHelper實(shí)現(xiàn)分頁(yè)效果

    這篇文章主要為大家詳細(xì)介紹了使用mybatis插件PageHelper實(shí)現(xiàn)分頁(yè)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • 詳解Spring Boot 使用Java代碼創(chuàng)建Bean并注冊(cè)到Spring中

    詳解Spring Boot 使用Java代碼創(chuàng)建Bean并注冊(cè)到Spring中

    本篇介紹了Spring Boot 使用Java代碼創(chuàng)建Bean并注冊(cè)到Spring中,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-02-02

最新評(píng)論

常德市| 志丹县| 临城县| 红桥区| 河源市| 扎赉特旗| 武功县| 墨竹工卡县| 舒兰市| 温州市| 合肥市| 浦江县| 平顺县| 绥江县| 山阳县| 介休市| 涪陵区| 体育| 盘山县| 冀州市| 玉门市| 疏勒县| 班玛县| 汉阴县| 安阳市| 句容市| 乌苏市| 镇雄县| 唐山市| 青阳县| 贵港市| 兴国县| 凌云县| 西昌市| 长子县| 霍邱县| 江北区| 深泽县| 池州市| 衡山县| 阳高县|