日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

spring总结(01)

發(fā)布時間:2025/3/15 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spring总结(01) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Spring 是企業(yè)級應(yīng)用的一個軟件開發(fā)框架(Framework),一個半成品。最大優(yōu)勢是更好實現(xiàn)資源的整合。例如整合JDBCMyBatisHibernate等框架資源以更好的簡化應(yīng)用軟件開發(fā),降低軟件開發(fā)周期。

?

Spring?最初的目標(biāo)就是要整合一切優(yōu)秀資源,然后對外提供一個統(tǒng)一的服務(wù),其具體架構(gòu)(Spring 4.0)如下:

Spring?中的核心組件:

1)?IOC??組件(控制反轉(zhuǎn)容器):對象創(chuàng)建,對象存儲,對象依賴管理。

2)?DATA?組件(整合JDBC,MyBatis,JPA,....)

3)?MVC ?組件(重點解決與表示層通訊問題)

4)?AOP ?組件(重點解決對象功能擴展問題)

?

1.1.?Spring?IOC?概述

Spring?中有一個核心容器,這個容器我們通常稱之為IOC(Inversion of Control)容器,這個容器最核心功能就是控制反轉(zhuǎn).這個容器負責(zé)對象的創(chuàng)建,

對象的存儲(map),對象管理(依賴查找,依賴注入)

?

總結(jié):

1)?核心服務(wù)(整合資源)

2)?核心特性 (IOC-面向?qū)ο?/span>,AOP-面向切面,Cloud-面向微服務(wù))

3)?核心目的(更好的對系統(tǒng)進行粒度控制,對象管理,功能擴展)

?

1.?Spring?框架中Bean對象基礎(chǔ)應(yīng)用

?

軟件應(yīng)用中由Spring管理的所有對象都稱之為Bean.我們自己創(chuàng)建假如需要由spring管理,首先對這個類進行配置,常用配置方式有兩種,一種基于xml進行配置,一種基于注解進行配置.

?

a.基于xml方式對象Bean對象進行配置時,首先需要在spring的核心配置文件中

使用bean標(biāo)簽對bean類型進行聲明,借助idname屬性指定的bean的一個

標(biāo)識.通過class屬性指定bean的具體類型(必須寫全類名);

?

1.1.?Bean 對象的構(gòu)建

Spring?中Bean對象的構(gòu)建,提供了如下兩種方式:

1)?直接通過構(gòu)造方法

2)?通過工廠的實例方法(調(diào)用FactoryBeangetObject方法)

代碼實現(xiàn): 直接通過構(gòu)造函數(shù)

??????<!-- 直接通過類的構(gòu)建方法構(gòu)建對象(重點)?-->

??????<bean?id="helloService"?class="beans.HelloService"/>

1.1.?Bean 對象的作用域

在Spring容器中管理Bean對象,可以聲明時通過scope屬性或

相關(guān)注解指定其作用域,常用是singleton,prototype.其含義如下

1)?singleton (這個作用域標(biāo)識的對象具備全局唯一性):系統(tǒng)默認

2)?prototype(這個作用域標(biāo)識的對象每次獲取都會創(chuàng)建新的對象)

?

?<bean?id="helloService"

????????????class="beans.HelloService"

????????????scope="singleton"/>

1.1.?Bean 對象的生命周期

在Spring框架應(yīng)用中,所有的的Bean對象生命周期,所謂Bean對象的生命周期是指Bean對象創(chuàng)建,初始化,服務(wù),銷毀的這個過程.

???spring配置文件中可以通過Init-method,destory-method屬性指定bean的生命周期方法.例如:

??<bean?id="helloService"

????????????class="beans.HelloService"

????????????scope="prototype"

? ? ? ? ? ?init-method="init"

? ? ? ? ?destroy-method="destory"/>

?

在Spring應(yīng)用由Spring創(chuàng)建的對象是否由spring銷毀,還取決于Bean對象的作用域的配置.例如

1)?singleton作用域的對象可以容器關(guān)閉時銷毀(會調(diào)用對象的銷毀資源的方法)

2)?prototype作用域的對象可以由容器創(chuàng)建對象,初始化對象,不負責(zé)銷毀.

一般是資源提供者對象,例如連接池對象可能會寫生命周期方法

?

Bean 對象的延遲加載

在spring框架應(yīng)用,容器初始化時候,默認會構(gòu)建所有由spring管理的Bean對象.假如這些對象時間不使用還占用著內(nèi)存就會造成一定的資源浪費.為了解決這個問題,spring提供了一種延遲加載機制.通過這種機制來提高系統(tǒng)資源有效使用.

Spring中的延遲加載需要通過bean元素lazy-init屬性beans元素的default-lazy-init="true"屬性進行設(shè)置.兩者應(yīng)用的不同點:

1)?lazy-init: 應(yīng)用在bean標(biāo)簽中用于指定這個bean的加載策略.

2)?default-lazy-init:應(yīng)用在beans標(biāo)簽中用于指定所有bean的加載策略.

例如:

<bean?id="helloService"?class="beans.HelloService"?scope="singleton"?lazy-init="true"/>

Spring?框架中依賴注(DI)基礎(chǔ)應(yīng)用

1.1.?直接量值的注入

Spring 直接量值的注入指的是通過Spring IOC為對象的8種封裝類以及String類型的屬性注入值。

?

配置OpenDataSource類并通過set方法為對象屬性賦值。

<bean?id="dataSource"?class="beans.OpenDataSource">

???????????<property?name="driverClassName"?value="com.jdbc.mysql.Driver"/>

???????????<property?name="url"?value="jdbc:mysql:///test"/>

???????????<property?name="username"?value="root"/>

???????????<property?name="password"?value="root"/>

</bean>

當(dāng)然假如對象提供了對應(yīng)的構(gòu)造方法也可以通過構(gòu)造方法為屬性注入值,例如

<bean?id="openDataSource02"?class="beans.OpenDataSource">

????????????<!-- 默認按照構(gòu)造方法參數(shù)順序注入值

???????????????????????說明:配置時有幾個constructor-arg就是

???????????????????????要調(diào)用帶及格參數(shù)的構(gòu)造函數(shù)

?????????????-->

????????????<constructor-arg?value="com.mysql.jdbc.Driver"/>

????????????<constructor-arg?value="jdbc:mysql:///test"/>

????????????<constructor-arg?value="root"/>

????????????<constructor-arg?value="123456"/>

</bean>

?

說明:依賴注入時可以將配置信息提取到properties文件中,然后通過spring表達式#{id.key}的方式提取數(shù)據(jù)。

?

類路徑下定義一個configs.properties文件,內(nèi)容如下

?

jdbcDriver=?com.mysql.jdbc.Driver

jdbcUrl=?jdbc:mysql:///test

jdbcUser=?root

jdbcPassword=123456

?

在spring的配置文件中configs.properties文件

<util:properties?id="cfg"?location="classpath:configs.properties"/>

?

在bean中為屬性注入值時使用spring 表達式

?

<bean?id="dataSource"?class="beans.OpenDataSource">

???????????<property?name="driverClassName"?value="#{cfg.jdbcDriver}"/>

???????????<property?name="url"?value="#{cfg.jdbcUrl}"/>

???????????<property?name="username"?value="#{cfg.username}"/>

???????????<property?name="password"?value="#{cfg.password}"/>

</bean>

其中#為spring特殊標(biāo)記,{}為表達式內(nèi)容,cfgutil:properties 標(biāo)簽中定義的id. username、password為配置文件等號左邊key

?

Spring?配置文件中為對象屬性注入值。

<bean?id="collection"??class="beans.CollectionObject">

?????????<property?name="list">

????????????<list>

???????????????<value>A</value>

???????????????<value>B</value>

????????????</list>

?????????</property>

?????????<property?name="map">

????????????<map>

??????????????<entry?key="k1"?value="100"?/>

??????????????<entry?key="k2"?value="300"?/>

????????????</map>

?????????</property>

?????????<property?name="properties">

????????????<props>

???????????????<prop?key="username">root</prop>

???????????????<prop?key="password">123456</prop>

????????????</props>

?????????</property>

?????</bean>

?

的設(shè)計

?

package?com.jt.common.utils;

/**生產(chǎn)者對象(負責(zé)向容器放數(shù)據(jù))*/

public?class?Producer {//IOC(工廠,容器)

/**生產(chǎn)者關(guān)聯(lián)一個容器對象(目的是要向此容器放數(shù)據(jù))*/

private?Container container;

public?void?setContainer(Container container) {

this.container?= container;

}

public?Container getContainer() {

return?container;

}

}

?

的基本配置

?

<bean?id="producer"?class="com.jt.common.utils.Producer">

????????????<!-- 借助ref屬性從容器中獲取一個idcontainer

?????????????的對象然后賦值給Producercontainer屬性 -->

????????????<property?name="Container"?ref="container"/>??????

</bean>

?

單元測試

?

public?class?TestProducer01 extends?TestBase{

@Test

public?void?testProducer(){

//1.獲取生產(chǎn)者對象

Producer pro=ctx.getBean("producer",Producer.class);

Assert.assertNotEquals(null, pro);

//2.獲取生產(chǎn)者關(guān)聯(lián)的容器對象

Container container=pro.getContainer();

Assert.assertNotEquals(null, container);

//3.向容器放數(shù)據(jù)

container.getMap().put("mysql", 100);

container.getList().add("皮皮霞");

}

}

轉(zhuǎn)載于:https://www.cnblogs.com/zj-xu/p/10830559.html

總結(jié)

以上是生活随笔為你收集整理的spring总结(01)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲国产精品无码久久久 | 欧美视频一二三区 | 国产精品久久久久久人妻精品动漫 | 91av视频在线免费观看 | 少妇系列在线观看 | 国产精品麻豆视频 | 日少妇av | 懂色av蜜臂av粉嫩av | 久久成人乱码欧美精品一区二区 | 91丨porny在线 | 香港三级在线视频 | 国产av精国产传媒 | wwww在线观看| xxx视频网站| 久久久久亚洲精品系列色欲 | 欧美久久久久久久久 | 777久久久精品一区二区三区 | 少妇高潮网站 | 我要色综合网 | 欧美日韩视频一区二区 | 色哟哟视频 | 十大黄台在线观看 | 国产天堂网 | 人妻少妇偷人精品久久久任期 | 成年人的视频网站 | 成人毛片视频网站 | 九久久久久| 精品久久福利 | 国产情侣在线视频 | 国产精品国产一区二区三区四区 | 国产精品图片 | 久久久久久亚洲av毛片大全 | 久久牛牛 | 91麻豆精品91久久久久同性 | 色婷婷www| 成人3d动漫一区二区三区 | 一区二区三区视频网站 | 丰满岳妇伦在线播放 | 人人人妻人人澡人人爽欧美一区 | 在线看h网站 | 先锋成人| 人妖一级片 | 玉米地疯狂的吸允她的奶视频 | 成人毛片在线精品国产 | 免费手机av| 张柏芝亚洲一区二区三区 | 波多野结衣在线观看一区二区三区 | 欧美精品免费在线观看 | 国产深夜福利 | 免费看的av| 成人免费网站视频 | 手机看片午夜 | 黄色在线网 | 中文字幕五区 | 亚洲精品第一页 | 丁香婷婷综合激情五月色 | 美女被日网站 | 国产片网站 | 97伊人超碰 | 超碰人人澡| 青草视屏 | www国产 | 久久黄页 | 人体内射精一区二区三区 | 日韩色视频在线观看 | 自拍99| 久久艳片www.17c.com | 久久久久久无码精品人妻一区二区 | 欧美老熟妇xb水多毛多 | 91热热 | 久久性感美女视频 | 久久久久看片 | 一区二区三区四区亚洲 | 少妇精品久久久久久久久久 | 日本一区二区三区在线看 | 亚洲美女视频在线 | 少妇淫片 | 国产伦一区二区 | 91精品国产高清一区二区三区蜜臀 | 一区二区三区四区亚洲 | 日本激情在线 | 国产一区欧美 | 天堂网在线中文 | 操干网| 成人日韩av| 玉足调教丨vk24分钟 | 亚洲免费视频大全 | 久久国产影视 | 欧美综合自拍亚洲综合图片区 | 国产精品一区二区无码对白 | av每日更新在线观看 | 国产a一级 | 成人污网站 | 黄色大片毛片 | 婷婷五月综合缴情在线视频 | 曰韩毛片 | 狠狠成人| 午夜精品在线 | 波多野结衣在线影院 |