Spring總結及不同版本間的區別

2021-07-04 11:37:13 字數 4739 閱讀 6803

spring總結及不同版本間的區別

spring中有乙個ioc物件容器(spring內部的乙個hashmap容器),用於盛放物件的!

spring中全部生成的物件都放在ioc物件容器中的!是以name或id的值做鍵存在容器中的!

給物件注入值的方式:---以下的4種全部都是交給spring框架去注入的!

1.  用不帶引數的構造子依賴注入

2.  set依賴注入

3.  帶引數的構造子依賴注入

4.  介面依賴注入

5.  lookup-method(使用cglib的動態位元組碼增強功能)注入,重寫方法!

---表示可以引用其他xml中的bean;

---local表示只能引用本xml中的bean;

spring中載入上下文的三種方式:

二 spring配置工廠bean

呼叫getbean(「工廠bean的id」)方法,spring返回的不是直接建立的工廠bean的例項,而是由工廠bean建立的bean例項(工廠bean生產的產品例項).

spring的ioc容器用於管理struts和hibernate

sessionfactory和事務都是hibernate中的東西,而不是spring 的,spring只是進行了封裝,本質上是hibernate的,spring通過springorm封裝了hibernate!

注意:在使用spring的時候,由hibernate生成的影射檔案中要取消指定的資料庫名,否則查詢資料庫是要報錯!

----------整合部分!

四 stirng1.2+spring1.2+hibernate3.1的整合(重點)

1. 

struts1.2的配置檔案: struts-config.xml檔案都是自動生成的!

attribute="userform"  

parameter="m"

path="/user"

name="userform"

type="org.springframework.web.struts.delegatingactionproxy"—不同點就在這裡,不是action的包路徑了,而是使用spring的**類交給spring去建立action的事例!讓它享受spring的服務

validate="false">

使用的事務和事務的管理都是用的hibernate裡面的東西,都在spring的.orm.hibernate3的下面

classpath:hibernate.cfg.xml

ger">

配置的繼承

下面的配置可以使用配置繼承的方法來減少spring的配置氾濫

先寫個基礎的**,不指定target的**目標,並且告訴spring是抽象的不能使用,abstract=」true」!

當建對於具體的目標的bean的時候,繼承上面的基礎**就可以了!parent=」baseproxy」

再把target指定**目標!

這就是**,可以在其中加工處理的!

用事務攔截機的**工廠bean,針對業務層進行事務的監控--

class="org.springframework.transaction.interceptor.transactionproxyfactorybean">

propagation_required

propagation_required

propagation_required

propagation_required

propagation_required

根據不同的動作而執行事務!  

propagation_required,readonly

針對業務層進行事務的監控

parent="baseproxy">

要使用sessionfactory查詢持久層!

要使用dao介面的資料

要使用業務層的資料

--預設就是true

但是不能直接來自於servicei,因為在業務層需要事務,資料庫才會生效!只有先用**處理!

3.web.xml檔案

struts1.2的配置檔案自己會載入的,但是spring則要我們自己來寫配置!

---上下文的載入spring的配置檔案!

contextconfiglocation

---spring載入***

org.springframework.web.context.contextloaderlistener

注意:在整合的過程中,spring的jar包和hibernate的jar包有許多的衝突,我們的處理方法是把hibernate的相容性先新增到專案中,讓它可以幫我們產生配置檔案和po影射檔案,再移出全部的jar 包,把hibernate的乙個.jta拷到專案中就夠使用了!。在和struts2.0的整合過程中也是如此!(只不過還有乙個struts2到spring的外掛程式.jar)

兩個.jar包都是倒到專案的webroot下的web-inf下的lib下就可以了!

struts1.2和struts2.0配合spring1.2時的區別:

(1)1.2在struts-config.xml中使用**類來來把action的事例交給spring的

org.springframework.web.struts.delegatingactionproxy

2.0中是在actions.xml中使用class=」action在spring 中的id名」

2.0 -------------------------------  id=」useraction」 

(3)2.0在struts.xml中使用了

(4)web.xml都是一樣的!

五.struts2.0+spring1.2+hibernate3.1的整合!

1.自己建actions.xml檔案

<?xml version="1.0" encoding="utf-8" ?>

"-//apache software foundation//dtd struts configuration 2.0//en"

"struts-2.0.dtd"> 

-原來是action的包路徑,spring整合不同

/user.jsp

2.自己建struts.xml檔案

<?xml version="1.0" encoding="utf-8" ?>

"-//apache software foundation//dtd struts configuration 2.0//en"

"struts-2.0.dtd">

[不用也可以]

file="actions.xml"/>

<?xml version="1.0" encoding="utf-8"?>

classpath:hibernate.cfg.xml

ger">

ean">

//去掉----//

propagation_required

propagation_required

propagation_required

propagation_required

propagation_required

propagation_required,readonly

此處引用定義**(都可以適用的,部分什麼版本的配合!)

lookup(利用cglib增強技術完成)

六.spring2.0的使用!

(struts2.0+spring2.0+hibernate3.1)

1. 

spring2.0完全向下相容spring1.2,**不經過改動就可以執行專案!

2. 

spring1.2和spring2.0的區別在**?

a.標頭檔案不同1.2是.dtd規則,而2.0是.xsd規則

b.下面的配置單態性不同!

vue vue cli不同版本的安裝及對比

條目 vue cli 1.x 2.x vue cli 3.x 4.x 包名稱vue cli vue cli 全域性安裝 npm install g vue cli 安裝指定版本npm install g vue cli 版本號 npm install g vue cli 安裝指定版本npm inst...

存在不同瀏覽器間的JS相容總結

2016年2月19日個人部落格文章 遷移到segmentfault 當我們在編寫js用於處理事件時,由於考慮到不同瀏覽器間js 相容不同,不易記憶,於是做出如下整理。當然以後還會增加更新的。示例 如下 1 阻止預設事件 obj.onclick function ev else 2 獲取下 上 乙個兄...

區分不同版本的iPhone

區分不同版本的iphone 可以從 uidevice 的屬性 model 得到在現在執行的環境。例子如下 123 4567 8910 nsstring modelname uidevice currentdevice model if modelname isequaltostring iphone...