其核心思想在於使用ioc容器來管理struts2中action的生命週期,這樣才能使得action中所依賴的物件被注入。接下來就是快速整合的過程
:
1、更改web.xml
讓web容器來接手ioc容器的建立!
contextconfiglocationparam-name>
param-value>
context-param>
org.springframework.web.context.contextloaderlistenerlistener-class>
listener>
2、設定struts2中的常量struts.objectfactory
這一操作是告訴struts2,它已經被spring接手了
struts.objectfactory=spring
對!就是bean那玩意兒
--id這這兒--!>
id="addbook"
class="com.woniu.lib.action.addbook">
name="bookbeandao"
ref="bookbeandaoimp">property>
基本步驟就是上面三步了,比把大象放入冰箱中簡單多了。值得注意的是:struts.xml中action標籤中的class要和上面的id對應!!!
<--!class在這兒!-->
name="addbook"
class="addbook"
method="add">
name="input">/manager.jspresult>
action>
a).先將mybaits資料來源注入到容器
..( 同時將mybatis.xml中的environments標籤中的內容去掉)
id="datasource"
class="org.springframework.jdbc.datasource.drivermanagerdatasource">
name="driverclassname"
value="com.mysql.jdbc.driver">
property>
name="url"
value="jdbc:mysql://localhost:3306/lib_manage?usessl=true">
property>
name="username"
value="root">
property>
name="password"
value="root">
property>
bean>
b).註冊乙個sqlsessionfactory物件
id="sqlsessionfactory"
class="org.mybatis.spring.sqlsessionfactorybean">
name="datasource"
ref="datasource">
property>
name="configlocation"
value="classpath:config.xml">
property>
bean>
c).註冊乙個自動掃瞄介面的玩意兒
name="basepackage"
value="com.woniu.lib.dao">
property>
name="sqlsessionfactory"
ref="sqlsessionfactory">
property>
bean>
有了這個東西就不用再單獨去寫mybatis中sql語句介面的實現類了
要想得到介面的實現類可以直接getbean那個實現類的名字
public
static
void
main(string args)
2、有一點麻煩的事物
一旦牽涉到資料庫就離不開事物,一說起事物我就頭大!!!不吐槽了,直接進入快樂的**搬運階段-。-
a).首先得註冊事物管理器
spring接手mybatis後事物預設自動提交
(貌似可以設定)
class="org.springframework.jdbc.datasource.datasourcetransactionmanager">
name="datasource"
ref="datasource">
property>
bean>
b1).在xml中設定事物屬性
這裡的核心思想就是使用aop程式設計將事物提公升到業務層
id="tranproxy"
class="org.springframework.transaction.interceptor.transactionproxyfactorybean">
--增強的目標物件--!>
name="target"
ref="transferservice">property>
--將事務提公升到業務的核心配置--!>
name="transactionmanager"
ref="transactionmanager">property>
--配置事務的屬性--!>
name="transactionattributes">
--配置隔離級別和傳播特性--!>
propagation_required,isolation_defaultprop>
-transactionexceptionprop>
property>
使用這種方式配置事物的話,問題就在於每乙個service都要給它配乙個transactionproxyfactorybean,就比較麻煩(官方文件上有一種寫法不麻煩,這裡我就我寫出來了,因為我打算以後用註解來搞定)。
b2).註解設定事物屬性
@transactional(isolation=isolation.default,propagation=propagation.required,rollbackfor=transactionexception.class)
@override
public
void
transfer(int aid, int bid, int money)
//b賬戶要加錢
bdao.update(bid, money);
}
單看**和配置事物這一塊是不麻煩的,但是要搞定什麼隔離級別和傳播特性以及什麼時候用什麼就有點頭大了。 Spring快速回憶 二
1 構造器注入 通過構造器注入屬性,當然前提是bean得有有參構造。id getcon3 class beandemo name id value 1 name name value hello word bean 除此之外還可以通過通過 構造器索引引數方式來實現依賴注入 根據引數型別進行注入。2 ...
C語言快速回憶書籤
include include int main return 0,將cpu使用權交個作業系統,int 返回乙個整型.include include int main for j 0 j 10 j return 0 include function declaration intmax int nu...
快速回憶正規表示式
這不是入門級文章,但如果你對正規表示式有了解,或使用過,則能幫助你快速回憶。閱讀此文需要你之前使用過正規表示式或者有些了解,因為我沒有寫很多的例子。總結正規表示式,只是因為個人在幾年的積累之後,想通俗簡單的概述正規表示式中各種符號和用法。網上有很多關於正規表示式,但總感覺專業術語太多,讀起來拗口或繞...