三種例項化bean的方式
1.使用類構造器例項化
<
bean
id="userdao1"
class
="com.winner.dao.daoimpl.userdaoimpl"
>
bean
>
使用反射利用類的無參構造器生成例項。
2.使用靜態工廠方法例項化
--配置檔案:
<
bean
id="userdao2"
class
="com.winner.dao.staticdaofactory"
factory-method
="createuserdaoinstance"
>
bean
>
--工廠類:
publicclass
staticdaofactory
}
3.使用例項化的工廠物件中的方法例項化,首先要構造出工廠例項,然後在生成例項
--配置檔案:
<
bean
id="******daofactory"
class
="com.winner.dao.******daofactory"
>
bean
>
<
bean
id="userdao3"
factory-bean
="******daofactory"
factory-method
="createuserdaoinstance"
>
bean
>
--工廠類:
publicclass
******daofactory
}
我們一般寫**的時候都會分層,顯示層,業務層,資料訪問層,顯示層呼叫業務層,業務層呼叫資料訪問層。
資料訪問層dao只需要乙個例項,業務層service只需要乙個例項,但是action每一次訪問都會生成乙個例項。
bean的作用域
在spring ioc容器中定義的bean預設只有乙個例項(單例的),且預設情況下會在容器啟動時初始化bean(餓漢式),但我們可以指定bean節點的lazy-init="true"來延遲初始化bean(懶漢式),這時候,只有第一次獲取bean會才初始化bean。如:
--建立類:
publicclass
user
}
--配置檔案:
<bean
id="user1"
class
="com.winner.spring.user"
/>
或是:
<bean
id="user1"
class
="com.winner.spring.user"
scope
="singleton"
/>
或是:
<bean
id="user1"
class
="com.winner.spring.user"
scope
="singleton"
lazy-init
="default"
/>
或是
<bean
id="user1"
class
="com.winner.spring.user"
scope
="singleton"
lazy-init
="false"
/>
<bean
id="user1"
class
="com.winner.spring.user"
scope
="singleton"
lazy-init
="true"
/>
當lazy-init取值true時,容器建立不會建立user物件,只有在getbean()時才會建立物件,即延遲載入
對所有bean都應用延遲初始化:
方法是在根節點beans中設定屬性default-lazy-init="true",如下所示:
<beans
default-lazy-init
="true"
...>
prototype(原型,表示每次獲取的都是新物件)
每次從容器獲取bean都是新的物件。
<bean
id="user1"
class
="com.winner.spring.user"
scope
="prototype"
/>
getbean()時生成例項。
指定bean的初始化方法和銷毀方法
--建立類:
publicclass
userdao
public
void
setdatasource(datasource datasource)
/*** 初始化方法
*/public
void
init()
/*** 銷毀的方法
*/public
void
destroy()
}
--配置:
<
bean
id="userdao"
class
="com.winner.spring.userdao"
init-method
="init"
destroy-method
="destroy"
/>
--測試**:
//////
在單例時,配置的初始化與銷毀方法都會被呼叫。
//在多例時,只有配置的初始化才會被呼叫。
@test
public
void test() throws
exception
--注意:
---如果scope屬性為prototype則不受spring快取的控制,destory方法也將不會執行(scope調為singleton時才會有效)。
Oracle中主鍵生成方式
專案中若採用oracle資料庫,則主鍵生成可以有兩種方式,一是用sys guid 二是定義乙個sequence,然後用nextval得到id。1 oracle的定義sequence例子 create sequence seq test minvalue 10000 maxvalue 99999999...
hibernate中主鍵生成方式
color darkblue color 1 color green assigned color 主鍵由應用邏輯產生,資料交由hibernate儲存時,主鍵值已經設定完畢,無需hibernate干預。在主鍵要特殊設定,有特殊意義的情況下使用,hibernate不會自動生成了,否則會生成後替換到自己...
長短token生成方式及作用
token的返回 使用者登陸後,後台會返回給使用者兩個token,1是長token,2是短token 有效期 長token有效期為乙個月,短token有效期為1小時 訪問與再次獲取 如果長token不存在,則使用者需要重新登入獲取長短token。後台設計 我們在生成長短token的時候將在redis...