1. 程式人生 > >使用註解注入sessionFactory的注意點

使用註解注入sessionFactory的注意點

都知道spring提供的有零配置功能,而且看見別人的一個專案使用spring+mybatis,只在applicationContext.xml裡定義了sqlSessionFactory,然後什麼都不用配置了,baseDao繼承自SqlSessionDaoSupport,只需要在每個dao上加@Repository註解,spring會自動向物件中注入sqlSessionFactory物件。

我用hibernate模仿著人家的例子,我也只在applicationContext.xml裡定義了sessionFactory,basedao繼承自HibernateDaoSupport,結果怎麼弄都報錯啊,'sessionFactory'

or'hibernateTemplate' is required

追查了良久,發現SqlSessionDaoSupport和HibernateDaoSupport是不一樣的,前者有這樣的一個方法

  1. @Autowired(required=false)  
  2. privatevoid setSqlSessionFacoty(SqlSessionFacoty sqlSessionFacoty){  
  3.     this.sqlSessionFacoty = sqlSessionFacoty;  
  4. }  
而後者的方法是
  1. publicvoid setSessionFacoty(SessionFacoty sessionFactory){  
  2.     this.sessionFactory = sessionFacoty;  
  3. }  


後者是沒有@Autowired的,所以spring是不會為繼承HibernateDaoSupport的物件自動裝配sessionFacotry的

那麼如何解決這個問題就有很多途徑了,比如你自己把HibernateDaoSupport的程式碼拷出來加個自動裝配的註解,當做自己的實現。

最簡單的方法,在BaseDao里加入一個方法

  1. @Autowired
  2. publicvoid setMySessionFactory(SessionFactory sessionFactory){  
  3.     super.setSessionFactory(sessionFactory);  
  4. }  

spring會按照型別自動裝配,所以方法名稱可以隨便寫,這樣就可以為子類的物件自動注入sessionFactory了。

為了不給沒有用過零配置的同學耗費時間,把重要配置貼出來:


applicationContext.xml裡配置如下

  1. <!-- 自動掃描配置 -->
  2. <context:component-scanbase-package="com.dao"/>
  3. <context:component-scanbase-package="com.service"/>

如果你用註解配置事物的話要加上

  1. <tx:annotation-driventransaction-manager="transactionManager"/>

相關推薦

使用註解注入sessionFactory注意

都知道spring提供的有零配置功能,而且看見別人的一個專案使用spring+mybatis,只在applicationContext.xml裡定義了sqlSessionFactory,然後什麼都不用配置了,baseDao繼承自SqlSessionDaoSupport,只需

使用spring註解注入sessionFactory

簡述 目前使用spring hibernate作為專案的框架,並且使用註解方式進行物件裝載。在裝載Dao物件的時候常常需要注入sessionFactory物件,通常的做法是Dao繼承至HibernateDaoSuppor,t然後在Dao中新增setSuperSessionF

繼承hibernateDaoSupport之後通過註解方式注入SessionFactory

因為hibernateDaoSupport中setSessionFactory()方式是final的, 不能被重寫 ,  但是可以在繼承hibernateDaoSupport的子類中加入一個方法為SessionFactory注入值 程式碼如下: @Resource(name

Spring的@Value註解在建構函式中應用的注意

在改造一個之前的SpringMVC專案,重新使用SpringBoot的架構。 有一個自定義屬性讀取的轉換過程,這裡記錄一下。 SpringMVC下的屬性讀取 專案使用MongoDB資料庫,直接使用MongoDB-Driver中的MongoClient進行程

spring使用註解注入HibernateTemplate的sessionFactory異常

@Component public class HibernateTemplate { private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session&

######Spring第5天ssh整合(註解版)難理解知識點:【自定義 方法加註解的方式】給dao注入sessionFactory屬性+【搞清@Autowared和@Resource含義】

===【方法加註解的方式】給dao注入sessionFactory屬性(繼承父類的屬性),第一次見!===具體怎麼用的,看原始碼。(後面有寫) 以前都是屬性+註解注入屬性。 [email protected]和@Resource到底是幹嘛的? 剛學IOC時可能能

使用註解為HibernateDaoSupport注入sessionFactory

http://blog.csdn.net/tsingheng/article/details/8847047 都知道spring提供的有零配置功能,而且看見別人的一個專案使用spring+mybatis,只在applicationContext.xml裡定義了sqlS

WTForms做更新時的一些注意

因為做“新增”和“更新”操作時的內容都是類似的,所以可以定義一個FlaskForm類然後在“新增”和“更新”模板中都使用該類進行渲染: MovieForm(FlaskForm): class MovieForm(FlaskForm): tag_list = Tag.query.al

CentOs6.3上安裝Oracle11g的注意

一、配置oracle使用者下的環境變數 # .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then     . ~/.bashrc fi # User

給初學者:JavaScript 的常見注意

作者:CarterLi 連結:https://segmentfault.com/a/1190000012730162(點選尾部閱讀原文前往) 本文總結一下JavaScript初學者常見的其他易錯點。 寫立即執行函式時前置 void 立即執行函式(IIFE

String、Object、包裝類的常用方法以及注意

   String類 1.1String的兩種例項化方式      a.直接賦值 String str=“hello”;      b.通過構造方法例項化String物件 1.2字串相等比較    

【PHP學習】靜態檔案快取綜合小案例以及一些函式的注意

靜態快取技術 儲存在磁碟上的靜態檔案,用PHP生 成資料到靜態檔案中。原理如下: php中的快取操作 生成快取 獲取快取 刪除快取 甩一段別人的程式碼 class Response{ static public function datas($cod

JavaScript物件型別判斷注意

注意點 不要使用 new Number() 、 new Boolean() 、 new String() 建立包裝物件;用 parseInt() 或 parseFloat() 來轉換任意型別到number;用

java下載檔案注意

前臺: 不建議使用ajax,可以使用window.location.href   後臺: 三個引數--> response path filename--filename如果要防止亂碼,可以用String str = URLEncoder.encode("中國","utf-8")

Spark2.10中使用累加器、注意以及實現自定義累加器

累加器(accumulator)是Spark中提供的一種分散式的變數機制,其原理類似於mapreduce,即分散式的改變,然後聚合這些改變。累加器的一個常見用途是在除錯時對作業執行過程中的事件進行計數。 累加器簡單使用 Spark內建的提供了Long和Double型別的累加器。下面是一個簡單的使

mysql資料庫基本操作注意

對於一個初學資料庫的人來說,最主要的還是要掌握DQL資料庫查詢語言和DML資料操作語言。 這裡主要對DQL進行簡單的總結,實質就是學習的筆記。 資料查詢語言基本的語句結構為select * from table_name; 1. 條件語句where關建字,支援多種運算子 比較運

【Java TCP/IP Socket程式設計】----進階----注意

1.廣播和多播:TCP套接字中客戶端只能接收和傳送指定伺服器端過來的資料,這種一對一的通訊方式叫單播,而UDP套接字可以容許一個傳送端和多個接收端情況,一對多的型別有:廣播和多播。       1)廣播:本地網路中所有的主機都會接收到一份資料副本。IPv4廣播地址(

將專案打成war包並用tomcat部署的方法,步驟及注意

部署的遇到第一個問題,就是tomcat和jdk的環境問題: 首先 理解為啥要關注這二者的環境呢?他們還是有關係的–tomcat 作為比較流行的java Web伺服器也是用java來實現的一個比較大的軟體 它也必須在虛擬機器JVM上執行 。 而java很多運用都是用在web開發上 所以他們就聯絡在一起

wait()、notify()、notifyAll() sleep()的注意

參考:https://blog.csdn.net/u014561933/article/details/58639411 參考:Java併發程式設計藝術 P98 wait補充知識點:有且只能呼叫持有鎖對應的物件的wait方法。若持有的是當前執行緒物件的鎖,則可以直接呼叫wait()/t

Spring中註解注入bean和配置檔案注入bean

註解的方式確實比手動寫xml檔案注入要方便快捷很多,省去了很多不必要的時間去寫xml檔案 按以往要注入bean的時候,需要去配置一個xml,當然也可以直接掃描包體,用xml注入bean有以下方法: 1 <?xml version="1.0" encoding="UTF-8"?> 2