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...