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

淺析Spring配置文件

 更新時(shí)間:2017年01月23日 10:32:20   作者:0nise  
本文主要對(duì)Spring配置文件進(jìn)行了介紹。具有很好的參考價(jià)值,下面跟著小編一起來看下吧

Spring的配置文件概述

簡介

Spring的配置文件是用于指導(dǎo)Spring工廠進(jìn)行Bean生成、依賴關(guān)系注入及Bean示例分發(fā)的”圖紙”,他是一個(gè)或多個(gè)標(biāo)磚的XML文檔,J2EE程序員必須學(xué)會(huì)靈活應(yīng)用這份”圖紙”,準(zhǔn)確的表達(dá)自己的”生成意圖”。

Spring配置文件的示例

Spring配置文件的一般結(jié)構(gòu)

Spring容器高層視圖

Spring容器啟動(dòng)基本條件:

Spring的框架類包

Bean的配置信息

Bean的元數(shù)據(jù)信息

Bean的實(shí)現(xiàn)類

Bean的屬性信息

例如:數(shù)據(jù)源的用戶名、密碼

Bean的依賴關(guān)系

Spring根據(jù)依賴關(guān)系配置完成Bean之間的裝配

Bean的行為配置

例如:生命周期范圍、生命周期各個(gè)過程的回調(diào)函數(shù)

Bean的創(chuàng)建方式

說明Bean是通過構(gòu)造器還是工廠方法來創(chuàng)建的

Bean的實(shí)現(xiàn)類

基于XML的配置

Spring的配置文件是基于XML格式的,Spring1.0的配置采用DTD格式,Spring2.0以后使用Schema的格式,后者讓不同類型的配置擁有了自己的命名空間,是配置文件更具有擴(kuò)展性。

XML分析

<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
<bean id="saleProduct" class="com.sale.entity.SaleProduct" ></bean>
<aop:config>
<aop:pointcut expression="execution(* com.sale.service.*.*(..))" id="mycut"/>
</aop:config>
</beans>

xmlns="

xmlns:xsi="

xmlns:aop="

xsi:schemaLocation="

http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/aop

<bean id="saleProduct" class="com.sale.entity.SaleProduct" ></bean>:為默認(rèn)命名空間中的配置

<aop:config>

<aop:pointcut expression="execution(* com.sale.service.*.*(..))" id="mycut"/>

</aop:config>:為aop命名空間的配置

Schema文件的用途

Spring3.0的配置Schema文件分部在各模塊類包中,如果模塊擁有對(duì)應(yīng)的Schema文件,則可以在模塊類包中找到一個(gè)config目錄,Schema文件就為與該目錄中,如下是對(duì)這些Schema文件的用途:

示例說明:spring-aop-3.0.xsd

命名空間:http://www.springframework.org/schema/aop

Schema文件:http://www.springframework.org/schema/aop/spring-aop-3.0.xsd

1. Spring-beans.xsd :用于配置Bean

2. Spring-aop-3.0.xsd :AOP配置

3. Spring-tx-3.0.xsd:聲明式事務(wù)配置的Schema

4. Spring-mvc-3.0.xsd:3.0新增的

5. Spring-utils-3.0.xsd:簡化某些復(fù)雜的標(biāo)準(zhǔn)配置

6. Spring-jee-3.0.xsd:是為簡化jee中ejb和jndi等功能的配置

7. Spring-jdbc-3.0.xsd:是3.0新增的,配置Spring內(nèi)接數(shù)據(jù)庫提供的Schema

8. Spring-jms-3.0.xsd:jms的配置

9. Spring-lang-3.0.xsd:添加了對(duì)動(dòng)態(tài)語言的支持,集成動(dòng)態(tài)語言定義的

10. Spring-oxm-3.0.xsd:配置對(duì)象xml映射到Schema

11. Spring-task-3.0.xsd:任務(wù)調(diào)度的Schema

12. Spring-tool-3.0.xsd:集成的Spring有用工具而定義的Schema

Spring Bean的命名

每個(gè)Bean可以有一個(gè)或多個(gè)id,我們把第一個(gè)id成為”標(biāo)識(shí)符”,其余id叫做id別名,這些id在IoC容器中必須唯一。

Bean id的命名方式

配置全限定類名,唯一

<bean class="com.sale.entity.SaleProduct" ></bean>

指定id,唯一

<bean  id="saleProduct"class="com.sale.entity.SaleProduct" ></bean>

指定name,唯一

<bean name="saleProduct" class="com.sale.entity.SaleProduct" ></bean>

指定id和name,唯一

<beanid="saleProduct"name="saleProduct"class="com.sale.entity.SaleProduct" ></bean>

指定多個(gè)name,唯一

<bean name="bean1;alias1;alias2" class="com.sale.entity.SaleProduct" ></bean>

指定多個(gè)id,唯一

<bean id="bean1;alias1;alias2" class="com.sale.entity.SaleProduct" ></bean>

指定別名,唯一

<bean id="saleProduct" class="com.sale.entity.SaleProduct" ></bean>
<alias name="saleProduct" alias="alias1"/>

Bean id的命名約定

1、遵循xml命名規(guī)范

2、由字母,數(shù)字,下劃線組成

3、駝峰式,第一個(gè)單詞首字母小寫,從第二個(gè)但是開始第首字母大寫

Spring Bean的實(shí)例化

Spring IoC容器是如何實(shí)例化Bean呢?傳統(tǒng)應(yīng)用程序可以通過 new和反射方式進(jìn)行實(shí)例化Bean。二Spring IoC容器則需要根據(jù)Bean定義的配置元數(shù)據(jù)使用反射機(jī)制來創(chuàng)建Bean。

Spring IoC容器創(chuàng)建Bean示例的方式

使用構(gòu)造器實(shí)例化Bean

默認(rèn)構(gòu)造

<bean id="saleProduct" class="com.sale.entity.SaleProduct" ></bean>

必須存在無參數(shù)的構(gòu)造

有參構(gòu)造

<bean id="saleProduct" class="com.sale.entity.SaleProduct" >
<constructor-arg name="prodName" value="哈哈" ></constructor-arg>
</bean>

必須存有參數(shù)的構(gòu)造

使用靜態(tài)工廠實(shí)例化Bean

必須的class屬性,factory-method屬性指定實(shí)例化Bean的方法,而且使用靜態(tài)工廠方法也允許指定方法參數(shù),Spring IoC容器將調(diào)用此屬性指定的方法來獲取Bean

<bean factory-method="newInstance" id="saleProduct" class="com.sale.entity.SaleProduct" >
<constructor-arg index="0" value="Hello" ></constructor-arg>
</bean>

使用實(shí)例工廠方法實(shí)例化Bean

不能指定class屬性,factory-bean來指定工廠Bean,factory-method指定實(shí)例化Bean的方法,而且使用實(shí)例工廠方法也允許指定參數(shù)

<!-- 定義實(shí)例工廠Bean -->
<bean id="saleProduct1" class="com.sale.entity.SaleProduct" ></bean>
<!-- 使用實(shí)例工廠Bean -->
<bean id="saleProduct2" factory-bean="saleProduct1" >
<constructor-arg index="0" value="Hello" ></constructor-arg>
</bean>

Spring Bean的作用域

Spring Bean中所說的作用域,在配置文件中即是”scope”。早面向?qū)ο蟪绦蛟O(shè)計(jì)中一般指對(duì)象或變量之間的可見范圍。而在Spring容器中是指其創(chuàng)建的Bean對(duì)象相對(duì)于其他Bean對(duì)象的請(qǐng)求范圍。

Spring Bean的作用域類型

Singleton

Spring IoC容器中僅存在一個(gè)Bean的實(shí)例,Bean以單利方式存在,單實(shí)例模式是最重要的設(shè)置模式之一,在Spring中對(duì)此實(shí)現(xiàn)了超越,可以對(duì)那些非線程安全的對(duì)象采用單例模式(一般使用在DAO層)

<bean scope="singleton" id="saleProduct" class="com.sale.entity.SaleProduct" ></bean>

prototype

每次從容器中調(diào)用Bean時(shí),都會(huì)返回一個(gè)全新的實(shí)例,即每次調(diào)用getBea()時(shí),相當(dāng)于執(zhí)行new Bean()的操作。在默認(rèn)情況下,Spring容器在啟動(dòng)時(shí)不實(shí)例化propotype的Bean。

<bean scope="prototype" id="saleProduct" class="com.sale.entity.SaleProduct" ></bean>

當(dāng)用于使用Spring的WebApplicationConext時(shí),還可以使用另外三種Bean的作用域,即request,session和globleSession。在使用Web應(yīng)用環(huán)境相關(guān)的Bean作用域時(shí),必須在Web容器中進(jìn)行一些額外的配置

低版本web容器配置:

<filter>
 <filter-name>requestContextFilter</filter-name>
 <filter-class>org.springframework.web.RequestConextFilter</filter-class>
</filter>
<filter-mapping>
 <filter-name>requestContextFilter</filter-name>
 <servlet-name>/*</servlet-name>
</filter-mapping>

高版本的Web容器配置:

<listener>
 <listener-class>
org.springframework.web.context.request.RequestConextLinstener
 </listener-class>
</listener>

request

發(fā)起一次http請(qǐng)求的時(shí)候Spring會(huì)創(chuàng)建一個(gè)全新實(shí)例

<bean scope="request" id="saleProduct" class="com.sale.entity.SaleProduct" ></bean>

Session

當(dāng)前會(huì)話

<bean scope="Session" id="saleProduct" class="com.sale.entity.SaleProduct" ></bean>

Global session

httpSession會(huì)話

<bean scope="Global session" id="saleProduct" class="com.sale.entity.SaleProduct" ></bean>

自定義作用域

在spring 2.0中,Spring的Bean作用域機(jī)制是可以擴(kuò)展的,這意味著,不僅可以使用Spring提供的預(yù)定義Bean作用域,還可以定義自己的作用域,甚至重啟定義現(xiàn)有的作用域(不提倡這么做,而且不能覆蓋內(nèi)置的sinleton和prototype作用域)

實(shí)現(xiàn)自定義Scope類:

Org.springframework.bean.factory.config.scope

注冊(cè)自定義Scope類:

ConfigurableBeanFactory.registerScope(String scopeName,Scope scope)

使用自定義的Scope:

Scope customScope = new ThreadScope();
beanFactory.registerScope(“thread”,customScope);
<bean id=”***” class=”***” scope=”scopeName”>

以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時(shí)也希望多多支持腳本之家!

相關(guān)文章

  • 淺談JAVA 內(nèi)存流的實(shí)現(xiàn)

    淺談JAVA 內(nèi)存流的實(shí)現(xiàn)

    這篇文章主要介紹了淺談JAVA 內(nèi)存流的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • java中優(yōu)化大量if...else...方法總結(jié)

    java中優(yōu)化大量if...else...方法總結(jié)

    在我們平時(shí)的開發(fā)過程中,經(jīng)??赡軙?huì)出現(xiàn)大量If else的場(chǎng)景,代碼顯的很臃腫,非常不優(yōu)雅,下面這篇文章主要給大家介紹了關(guān)于java中優(yōu)化大量if...else...方法的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • Java觀察者模式的深入了解

    Java觀察者模式的深入了解

    這篇文章主要為大家介紹了Java觀察者模式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • 如何通過Java實(shí)現(xiàn)加密、解密Word文檔

    如何通過Java實(shí)現(xiàn)加密、解密Word文檔

    這篇文章主要介紹了如何通過Java實(shí)現(xiàn)加密、解密Word文檔,對(duì)一些重要文檔,常需要對(duì)文件進(jìn)行加密,查看文件時(shí),需要正確輸入密碼才能打開文件。下面介紹了一種比較簡單的方法給Word文件加密以及如何給已加密的Word文件解除密碼保護(hù),需要的朋友可以參考下
    2019-07-07
  • SpringBoot使用?Sleuth?進(jìn)行分布式跟蹤的過程分析

    SpringBoot使用?Sleuth?進(jìn)行分布式跟蹤的過程分析

    Spring Boot Sleuth是一個(gè)分布式跟蹤解決方案,它可以幫助您在分布式系統(tǒng)中跟蹤請(qǐng)求并分析性能問題,Spring Boot Sleuth是Spring Cloud的一部分,它提供了分布式跟蹤的功能,本文將介紹如何在Spring Boot應(yīng)用程序中使用Sleuth進(jìn)行分布式跟蹤,感興趣的朋友一起看看吧
    2023-10-10
  • Spring Cloud出現(xiàn)Options Forbidden 403問題解決方法

    Spring Cloud出現(xiàn)Options Forbidden 403問題解決方法

    本篇文章主要介紹了Spring Cloud出現(xiàn)Options Forbidden 403問題解決方法,具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-11-11
  • 用java實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)

    用java實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)學(xué)生信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • Java實(shí)現(xiàn)音頻轉(zhuǎn)文本的示例代碼(語音識(shí)別)

    Java實(shí)現(xiàn)音頻轉(zhuǎn)文本的示例代碼(語音識(shí)別)

    Java中實(shí)現(xiàn)音頻轉(zhuǎn)文本通常涉及使用專門的語音識(shí)別服務(wù),本文主要介紹了Java實(shí)現(xiàn)音頻轉(zhuǎn)文本的示例代碼(語音識(shí)別),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-05-05
  • spring security如何擴(kuò)展自定義登錄

    spring security如何擴(kuò)展自定義登錄

    本文詳細(xì)介紹了Spring Security的認(rèn)證原理和具體實(shí)現(xiàn),認(rèn)證原理基于過濾器鏈,通過驗(yàn)證用戶憑證和構(gòu)建認(rèn)證對(duì)象來保護(hù)應(yīng)用程序資源,實(shí)現(xiàn)自定義認(rèn)證功能的步驟包括創(chuàng)建自定義認(rèn)證提供程序、實(shí)現(xiàn)UserDetailsService接口以及在配置類中進(jìn)行相應(yīng)的配置
    2024-11-11
  • java調(diào)用process線程阻塞問題的解決

    java調(diào)用process線程阻塞問題的解決

    這篇文章主要介紹了java調(diào)用process線程阻塞問題的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06

最新評(píng)論

隆昌县| 赞皇县| 昭平县| 大姚县| 广宁县| 城步| 衡阳市| 凤阳县| 讷河市| 白山市| 福鼎市| 马龙县| 赤水市| 正宁县| 故城县| 崇阳县| 延安市| 新平| 陕西省| 额敏县| 左贡县| 大安市| 高雄县| 仙游县| 方正县| 延庆县| 满洲里市| 安义县| 东乡族自治县| 泽普县| 天祝| 尼玛县| 安阳县| 黑龙江省| 保康县| 砀山县| 吉隆县| 封丘县| 兴业县| 渑池县| 奎屯市|