ssh註解配置

2021-07-25 14:58:14 字數 3343 閱讀 6674

1.頭部宣告需加入

xmlns:context="

"/spring-context-3.0.xsd

2.檔案內部配置

< context:annotation-config /> 

< context:component-scan base-package="com.newer" />

bean註解管理

spring自動掃瞄管理bean註解有四種配置模式,如下

@service     用於業務層(service) 示例:@service("baseservice")

@controller  用於控制層(action)  示例:@controller("baseaction")

@repository  用於資料訪問層(dao) 示例:@repository("basedao")

@component   泛型配置(當元件不確定時用),以上3種配置是基於此擴充套件

推薦不同分層採用對應的配置,切忌所有配置都使用@component

spring事物註解配置

< bean id="hibernatetransaction" class="org.springframework.orm.hibernate3.hibernatetransactionmanager">

< /bean>

< tx:annotation-driven transaction-manager="hibernatetransaction" proxy-target-class="true" />

@transactional            //預設事務配置

@transactional(rollbackfor=exception.class) //出現exception異常也回滾

@transactional(norollbackfor=exception.class) //出現exception異常不回滾

@transactional(readonly=true) //唯讀,效能優化,效率高

@transactional(propagation=propagation.not_supported)  //不開啟事務

@transactional(propagation=propagation.required) //如果有事務,那麼加入事務,沒有的話新建乙個(不寫的情況下)

@transactional(propagation=propagation.not_supported) //容器不為這個方法開啟事務

@transactional(propagation=propagation.requires_new) //不管是否存在事務,都建立乙個新的事務,原來的掛起,新的執行完畢,繼續執行老的事務

@transactional(propagation=propagation.mandatory) //必須在乙個已有的事務中執行,否則丟擲異常

@transactional(propagation=propagation.never) //必須在乙個沒有的事務中執行,否則丟擲異常(與propagation.mandatory相反)

@transactional(propagation=propagation.supports) //如果其他bean呼叫這個方法,在其他bean中宣告事務,那就用事務.如果其他bean沒有宣告事務,那就不用事務.

@transactional(propagation=propagation.nested)

@transactional(propagation = propagation.required,readonly=true) //readonly=true唯讀,不能更新,刪除

@transactional(propagation = propagation.required,timeout=30)//設定超時時間

@transactional(propagation = propagation.required,isolation=isolation.default)//設定資料庫隔離級別

註解事物是可以依賴類繼承而繼承的,例如某個service繼承了baseservice,那麼它也會繼承baseservice的事物宣告

1.事務的隔離級別

default

採用資料庫預設隔離級別

read_uncommitted

讀未提交資料( 會出現髒讀,不可重複讀,幻讀 ,避免了 第一類丟失 更新 )

read_committed

讀已提交的資料(會出現不可重複讀,幻讀)

repeatable_read

可重複讀(會出現幻讀)

serializable

序列化action註解單例問題

交有spring管理後,action預設是單例模式。但是專案不能全部都採用單例,使用我們需要加入相關註解切換為非單例:

在action上面配置,@scope("prototype") ,每個請求都會new乙個新的例項

2. 事務的傳播屬性

propagation_never

宣告方法絕對不能在事務範圍內執行,如果方法在某個事務範圍內執行,容器就拋異常.只有沒關聯到事務,才正常執行.

nested

巢狀事務(一般資料庫不支援)

required

supports

支援事務, 存在:加入,不存在:不使用事務

mandatory

只能在乙個已存在事務中執行,業務方法不能發起自己的事務,如果業務方法在沒有事務的環境下呼叫,就拋異常

requires_new

業務方法總是會為自己發起乙個新的事務,如果方法已執行在乙個事務中,則原有事務被掛起,新的事務被建立,直到方法結束,新事務才結束,原先的事務才會恢復執行.

not_supported

宣告方法需要事務,如果方法沒有關聯到乙個事務,容器不會為它開啟事務.如果方法在乙個事務中被呼叫,該事務會被掛起,在方法呼叫結束後,原先的事務便會恢復執行.

propagation_never

宣告方法絕對不能在事務範圍內執行,如果方法在某個事務範圍內執行,容器就拋異常.只有沒關聯到事務,才正常執行.

bean初始化執行配置(伺服器啟動時就執行)

要想在bean初始化的時候就執行某個方法可使用註解@postconstruct,同樣有初始化就有結束@predestroy

@postconstruct

public void init()

@predestroy

public void destory(){

system.out.println("關閉資源");

SSH註解配置

1.頭部宣告需加入 xmlns context spring context 3.0.xsd 2.檔案內部配置 context annotation config context component scan base package com.newer bean註解管理 spring自動掃瞄管理b...

SSH框架 註解配置,bean註解 事物註解等

2.檔案內部配置 bean註解管理 spring自動掃瞄管理bean註解有四種配置模式,如下 service 用於業務層 service 示例 service baseservice controller 用於控制層 action 示例 controller baseaction repositor...

SSH註解方式

service用於標註業務層元件 controller用於標註控制層元件 如struts中的action repository用於標註資料訪問元件,即dao元件 component泛指元件,當元件不好歸類的時候,我們可以使用這個註解進行標註。注入方式 把dao實現類注入到action的service...