国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

淺析Spring配置文件

2019-11-26 13:11:18
字體:
來源:轉載
供稿:網友

Spring的配置文件概述

簡介

Spring的配置文件是用于指導Spring工廠進行Bean生成、依賴關系注入及Bean示例分發的”圖紙”,他是一個或多個標磚的XML文檔,J2EE程序員必須學會靈活應用這份”圖紙”,準確的表達自己的”生成意圖”。

Spring配置文件的示例

Spring配置文件的一般結構

Spring容器高層視圖

Spring容器啟動基本條件:

Spring的框架類包

Bean的配置信息

Bean的元數據信息

Bean的實現類

Bean的屬性信息

例如:數據源的用戶名、密碼

Bean的依賴關系

Spring根據依賴關系配置完成Bean之間的裝配

Bean的行為配置

例如:生命周期范圍、生命周期各個過程的回調函數

Bean的創建方式

說明Bean是通過構造器還是工廠方法來創建的

Bean的實現類

基于XML的配置

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

XML分析

<?xml version="1.0" encoding="UTF-8"?><beansxmlns="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.xsdhttp://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="

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>:為默認命名空間中的配置

<aop:config>

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

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

Schema文件的用途

Spring3.0的配置Schema文件分部在各模塊類包中,如果模塊擁有對應的Schema文件,則可以在模塊類包中找到一個config目錄,Schema文件就為與該目錄中,如下是對這些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:聲明式事務配置的Schema

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

5. Spring-utils-3.0.xsd:簡化某些復雜的標準配置

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

7. Spring-jdbc-3.0.xsd:是3.0新增的,配置Spring內接數據庫提供的Schema

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

9. Spring-lang-3.0.xsd:添加了對動態語言的支持,集成動態語言定義的

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

11. Spring-task-3.0.xsd:任務調度的Schema

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

Spring Bean的命名

每個Bean可以有一個或多個id,我們把第一個id成為”標識符”,其余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>

指定多個name,唯一

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

指定多個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命名規范

2、由字母,數字,下劃線組成

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

Spring Bean的實例化

Spring IoC容器是如何實例化Bean呢?傳統應用程序可以通過 new和反射方式進行實例化Bean。二Spring IoC容器則需要根據Bean定義的配置元數據使用反射機制來創建Bean。

Spring IoC容器創建Bean示例的方式

使用構造器實例化Bean

默認構造

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

必須存在無參數的構造

有參構造

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

必須存有參數的構造

使用靜態工廠實例化Bean

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

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

使用實例工廠方法實例化Bean

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

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

Spring Bean的作用域

Spring Bean中所說的作用域,在配置文件中即是”scope”。早面向對象程序設計中一般指對象或變量之間的可見范圍。而在Spring容器中是指其創建的Bean對象相對于其他Bean對象的請求范圍。

Spring Bean的作用域類型

Singleton

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

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

prototype

每次從容器中調用Bean時,都會返回一個全新的實例,即每次調用getBea()時,相當于執行new Bean()的操作。在默認情況下,Spring容器在啟動時不實例化propotype的Bean。

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

當用于使用Spring的WebApplicationConext時,還可以使用另外三種Bean的作用域,即request,session和globleSession。在使用Web應用環境相關的Bean作用域時,必須在Web容器中進行一些額外的配置

低版本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

發起一次http請求的時候Spring會創建一個全新實例

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

Session

當前會話

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

Global session

httpSession會話

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

自定義作用域

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

實現自定義Scope類:

Org.springframework.bean.factory.config.scope

注冊自定義Scope類:

ConfigurableBeanFactory.registerScope(String scopeName,Scope scope)

使用自定義的Scope:

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

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持武林網!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 门源| 周口市| 石阡县| 扶风县| 鹤峰县| 新津县| 灵宝市| 平远县| 曲周县| 怀来县| 调兵山市| 平乐县| 涟源市| 乳山市| 如皋市| 扎兰屯市| 澜沧| 佛坪县| 宜章县| 双牌县| 基隆市| 益阳市| 弥渡县| 桦南县| 龙门县| 朝阳区| 合肥市| 禹城市| 浮梁县| 舞阳县| 淮北市| 灵宝市| 舞阳县| 诸城市| 新密市| 拜泉县| 泾源县| 宁陵县| 临漳县| 平阴县| 武安市|