Spring中註解bean和事務?有哪些相關的註解?踩坑
- <context:component-scanbase-package="org.example"/>
- 然後可以用@Component、@Controller、@Service、@Repository註解來標註需要由Spring IoC容器進行物件託管的類。這幾個註解沒有本質區別,只不過@Controller通常用於控制器,@Service通常用於業務邏輯類,@Repository通常用於倉儲類(例如我們的DAO實現類),普通的類用@Component來標註。
- <!-- 自動掃描元件,這裡要把web下面的 controller去除,他們是在spring-mvc.xml中配置的,如果不去除會影響事務管理的。 -->
<context:component-scan base-package="com.cfcmms">
<context:exclude-filter type="annotation"
expression="org.springframework.stereotype.Controller" />
</context:component-scan>
在主容器中(applicationContext.xml),將Controller的註解打消掉
<!-- 自動掃描元件,這裡要把web下面的 controller去除,他們是在spring-mvc.xml中配置的,如果不去除會影響事務管理的。 --> <context:component-scan base-package="com.cfcmms"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" /> </context:component-scan>
2 而在springMVC配置檔案中將Service註解給去掉
<!-- 把標記了@Controller註解的類轉換為bean --> <context:component-scan base-package="com.cfcmms.**.controller"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service" /> </context:component-scan>
因
為spring的context是父子容器,所以會產生衝突,Controller會進步前輩行掃描裝配,而此時的Service還沒有進行事務的加強處
理懲罰,獲得的將是原樣的Service(沒有經過事務加強處理懲罰,故而沒有事務處理懲罰才能)
,最後才是applicationContext.xml中的掃描裝置進行事務處理
這個用的是 hibernate5 的sessionFactory 配置的session事務
<!-- 配置一個事務管理器 --> <bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory" /> </bean> <!-- 事務管理 通知 --> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <!-- 定義以下開頭的方法名都是隻讀的模式 --> <tx:method name="select*" read-only="true" /> <tx:method name="count*" read-only="true" /> <tx:method name="get*" read-only="true" /> <tx:method name="query*" read-only="true" /> <tx:method name="find*" read-only="true" /> <tx:method name="load*" read-only="true" /> <!-- 其他所有方法都使用事務 --> <tx:method name="*" propagation="REQUIRED" read-only="false" rollback-for="Exception" /> </tx:attributes> </tx:advice> <!-- 事務 aop 配置 --> <aop:config> <!-- 定義一個切入點 --> <aop:pointcut id="serviceMethods" expression="execution(* com.cfcmms..*.service.*Service.*(..))" /> <!-- 對切入點和事務的通知,進行適配 --> <aop:advisor advice-ref="txAdvice" pointcut-ref="serviceMethods" order="2" /> <!-- 多資料來源切換 --> <aop:aspect ref="dataSourceAspect" order="1"> <aop:before method="intercept" pointcut-ref="serviceMethods" /> </aop:aspect> </aop:config> <!-- 啟用對事務註解的支援 --> <tx:annotation-driven transaction-manager="transactionManager" />
相關推薦
Spring中註解bean和事務?有哪些相關的註解?踩坑
<context:component-scanbase-package="org.example"/>然後可以用@Component、@Controller、@Service、@Repository註解來標註需要由Spring IoC容器進行物件託管的類。這幾個註
spring xml配置bean和context:component-scan掃描註解註冊bean的區別
本文啟動spring容器用的是dubbo的main方法 1.xml配置bean: 2.<context:component-scan>掃描註解註冊bean: 測試猜測結果: 前者啟動spring容器時建立bean
Spring中如何使用註解來配置Bean?有哪些相關的註解?
首先需要在Spring配置檔案中增加如下配置:<context:component-scan base-package="org.example"/>然後可以用@Component、@Con
Spring中通過變數和import標籤來控制載入哪些bean
需求:根據設定變數,來載入某個spring的bean的配置檔案,這個配置檔案中,有某些使用的bean。在一些情況下,不希望這些bean被初始化和載入進context中,也不需要被外面訪問到。 在spring中,我們通過placeholder類可以讀取配置檔案,裡面可以設定引數,而在配置檔案或容器中使
事務有哪些特性?spring的事務管理有幾種方式實現,如何實現?spring 中常用的兩種事務配置方式以及事務的傳播性、隔離級別
事務有哪些特性? 1.原子性:一個事務中所有對資料庫的操作是一個不可分割的操作序列,要麼全做要麼全不做 2.一致性:資料不會因為事務的執行而遭到破壞 3.隔離性:一個事物的執行,不受其他事務的干擾,即併發執
spring 中<bean>的id 和name 的區分
lifecycle 文件中 空格 當前 基本類 分號 推薦 第一個 沖突 1. id 和name 屬性作用上一樣,推薦使用id; 2. id取值要求嚴格些,必須滿足XML的命名規範。id是唯一的,配置文件中不允許出現兩個id相同的<bean>。 3. name取
spring中的Bean的id和name的區別
spring中的Bean的id和name的區別 2017年10月01日 18:23:59 冰河家園 閱讀數:296 標籤: spring 更多 個人分類: spring Spring中Bean的命名 1、每個Bean可以有一個id屬性,並可以根據該id在IoC容器中查詢該Bean
易學筆記-第2章:spring中的Bean/2.6 環境引數和佔位符
第2章:spring中的Bean/2.6 環境引數和佔位符/2.6.1 環境引數/2.6.1.1 概念 概念與設定 指的是為了區分不同的環境而設定的引數,比如開發環境和生產環境 第2章:spring中的Bean/2.6 環境引數和佔
Spring中的@Bean註解在方法上的作用
首先我們看一下這個註解的類 import org.springframework.context.annotation.Bean; @Bean("dd") public User getControllBean(){ &
Spring的Bean容器都有哪些
最近正在重讀《Spring In Action》一書,把裡面的知識點再回顧一遍。 BeanFactory是一個頂層介面,是最基本的Bean容器。Spring使用BeanFactory來生成,配置和管理Bean。 ApplicationContext是BeanFactory的子類,它比B
如何讓servelt和Filter注入到spring容器或者在servlet中呼叫spring中的bean
在應用中一般普通的JavaPojo都是由Spring來管理的,所以使用autowire註解來進行注入不會產生問題,但是有兩個東西是例外的,一個是 Filter,一個是Servlet,這兩樣東西都是由Servlet容器來維護管理的,所以如果想和其他的Bean一
通過註解的方式在spring中註冊bean
1.首先你得讓spring容器知道你編寫的類是使用了註解方式 在sessionFactory的屬性packageToScan中寫上你的使用了註解類的包名 注意:如果你是使用的list,在value之間一定不要有空格,否者容器不能掃描到類。 2.幾種有必要知道的註解含義 @
spring中建立bean物件時多例和單例的區別
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w
單例模式中,惡漢式和懶漢式有哪些區別。各使用在哪裡?為什麼說推薦使用惡漢式
餓漢式: public class Singleton{ private static Singleton singleton = new Singleton (); private Singleton (){}
[每日一問]---Java中支援的資料型別有哪些?什麼是自動裝箱和拆箱?
Java支援的資料型別包括兩種:基本資料型別、引用型別 1)基本資料型別有8種: byte、short、int、long、float、double、boolean、char 2)引用型別: 如S
JavaScript中的布林值false和true有哪些?
在JavaScript中,false型別有: 1.undefined 2.‘ ’ //空字串 3.null 4.false 5.NaN //值NaN是一個數值,表示一個不能產生正常結果的運算
對象在類中的存儲方式有哪些?
執行文件 結構 交換 文件中 用戶 lan 邏輯 長度 由於 對象類型和整型、字符串等類型一樣,也是PHP中的一種數據類型。都是在程序中用於存儲不同類型數據使用的,在程序運行時它的每部分內容都要先加載到內存中再被使用。那麽對象類型的數據在內存中是如何分配的呢?先來了解一下內
Spring 中的IOC和DI
註入 機制 容器 返回 其他 工作 一個 請求 功能 IOC是一種叫做“控制反轉”的設計思想。 1、較淺的層次——從名字上解析 “控制”就是指對 對象的創建、維護、銷毀等生命周期的控制,這個過程一般是由我們的程序去主動控制的,如使用new關鍵字去創建一個對象(創建),在使用
半夜思考之查漏補缺 , Spring 中的 Bean 繼承機制
size 完全 font 區別 nbsp spring 多態 實例 ont 這裏的繼承 , 不是 Java 中的繼承 , 下面就總結下 Bean繼承與Java繼承的區別: Spring 中的子類 Bean 和父 Bean 可以是不同類型 , 但是 Java
Spring中的Bean配置
jdbc 子節點 drive 互訪 app 互訪問 style car 註意 IOC&DI概述 OPC(Inversion of Control):其思想是反轉資源獲取的方向。傳統的資源查找方式要求組件向容器發起請求查找資源。作為回應,容器適時的返回資源。而應用