版權聲明:本文為部落客原創文章,遵循 CC 4.0 BY-SA 版權協定,轉載請附上原文出處連結和本聲明。
本文連結:https://blog.csdn.net/zhao1299002788/article/details/102135627
1. 什麼是maven?
它是一個軟體開發的管理工具,主要管理的工作是:依賴管理,項目建構.
2. 使用maven的好處?
能夠集中管理jar包,提供一鍵建構.
3. maven的安裝及配置
配置:MAVEN_HOME,PATH路徑配置.
本地倉庫 : <localRepository>
Settings.xml 檔案中.
<localRepository>d:/repository</..>
運作 : mvn -v.
4. 常用的maven指令
compile,test,package,install,deploy
clean
site
5. maven 工程是具有一定的目錄結構
src
main
java(程式主要代碼)
resources(配置檔案)
webapps
test
java(測試代碼)
resources(測試的配置檔案)
pom.xml(寫一些坐标)
6. eclipse工具下的maven工程開發
7. 在pom.xml檔案中如何引入坐标
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
8. 總結
二、Maven工程的拆分與聚合(重點)
一個完整的早期開發好的crm項目,現在要使用maven工程對它進行拆分,這時候就可以将dao拆解出來形成表現獨立的工程,同樣service,action也都這樣拆分
工程拆分之後,将來還要聚合(聚合就是将拆分的工程進一步組合在一起,又形成一個完整的項目)
為了達到聚合的目标,是以今天會引入
父工程(maven project)
子子產品(maven module) dao ,service, web
開發步驟:
1.建立一個maven父工程
點下一步:
建立後的父工程如下:
從它的目錄結構可以看出,父工程本身不寫代碼,它裡面有一個pom.xml檔案,這個檔案可以将多個子子產品中通用的jar所對應的坐标,集中在父工程中配置,将來的子子產品就可以不需要在pom.xml中配置通用jar的坐标了
2.如何建立這個父工程的一個子子產品?
點next,進入如下圖:
點next,進入如下圖:
3.再次檢視父工程的pom.xml檔案
4.檢視子子產品的pom.xml,發現多了一個 parent結點
并且内部所包含的結點,其實就是父工程的坐标
坐标=groupId+artifactId+version
組織名 項目名 版本
三.沖突問題的解決
1.通過添加<exclusion>标簽來解決沖突
在父工程中引入了struts-core,hibernate-core,就發現jar包是有沖突的
Javassist存在版本上沖突問題
進入下圖:
背後的父工程的pom.xml檔案中,添加的内容
2.依賴調解原則:
maven自動按照下邊的原則調解:
1、第一聲明者優先原則
在pom檔案定義依賴,先聲明的依賴為準。
測試:
如果将上邊struts-spring-plugins和spring-context順序颠倒,系統将導入spring-beans-4.2.4。
分析:
由于spring-context在前邊以spring-context依賴的spring-beans-4.2.4為準,是以最終spring-beans-4.2.4添加到了工程中。
2、路徑近者優先原則
例如:A依賴 spirng-beans-4.2.4,A依賴B依賴 spirng-beans-3.0.5,則spring-beans-4.2.4優先被依賴在A中,因為spring-beans-4.2.4相對spirng-beans-3.0.5被A依賴的路徑最近。
測試:
在本工程中的pom中加入spirng-beans-4.2.4的依賴,根據路徑近者優先原則,系統将導入spirng-beans-4.2.4:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>
2.使用版本鎖定實作沖突解決
首先父工程中pom.xml檔案添加:
在使用坐标時,對于同一個架構,引入多次時,它的版本資訊就會多次出現,是以
可以借用常量的思想,将這些版本号提取出來,在需要用到的時候,直接寫版本的常量名稱就可以了。
引用上面的常量
3.最終在ssh_parent的pom.xml中引入的坐标
依賴注入手動排除 : 可以當做特殊情況,struts2架構和hibernate架構很少使用共同的jar包.
聲明優先原則 : 選擇的依據,根據引入順序,誰先引入,就先使用誰.
pom.xml裡面的Dependencies選項裡面的坐标引入的都是直接依賴.
而通過直接依賴引入的jar包都是傳遞依賴.
路徑近者優先 : 直接引入的依賴,優先級高于傳遞進來的依賴.
<!--使用常量來管理以後版本更新的問題 -->
<properties>
<spring-version>4.2.4RELEASE</spring-version>
</properties>
<!-- 依賴管理節點限制使用jar包的版本 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring-version}</version>
</dependen
</dependencies>
</dependcyManagement>
三、依賴關系
依賴具有傳遞性,但不是無限傳遞的,傳遞的規則如下:
A-provided-B B-runtime-C
解決方法:
如果在依賴傳遞過程中,導緻jar包丢失,我們的做法很簡單,就是再導入一次坐标
四.編寫Service子產品
1.建立一個maven module項目
建立結束後,父工程中結構如下:
父工程的pom.xml檔案如下
2.在service的pom.xml檔案中引入dao的jar包
Web層的子子產品建立:
四、私服搭建
下載下傳nexus
Nexus 是Maven倉庫管理器,通過nexus可以搭建maven倉庫,同時nexus還提供強大的倉庫管理功能,構件搜尋功能等。
下載下傳Nexus, 下載下傳位址:http://www.sonatype.org/nexus/archived/
下載下傳:nexus-2.12.0-01-bundle.zip
安裝 :
1.解壓,進入指定的目錄
2.安裝并啟動這個應用程式
cmd進入bin目錄(E:\sshenv\nexus-2.12.0-01-bundle\nexus-2.12.0-01\bin),執行nexus.bat install
安裝成功在服務中檢視有nexus服務:
解除安裝nexus
cmd進入nexus的bin目錄,執行:nexus.bat uninstall
檢視window服務清單nexus已被删除。
啟動nexus
方法1:
cmd進入bin(你解壓的nexus的bin)目錄,執行nexus.bat start
方法2:
直接啟動nexus服務
檢視nexus的配置檔案conf/nexus.properties
# Jetty section
application-port=8081 # nexus的通路端口配置
application-host=0.0.0.0 # nexus主機監聽配置(不用修改)
nexus-webapp=${bundleBasedir}/nexus # nexus工程目錄
nexus-webapp-context-path=/nexus # nexus的web通路路徑
# Nexus section
nexus-work=${bundleBasedir}/../sonatype-work/nexus # nexus倉庫目錄
runtime=${bundleBasedir}/nexus/WEB-INF # nexus運作程式目錄
通路:
http://localhost:8081/nexus/
使用Nexus 内置賬戶admin/admin123登陸:
點選右上角的Log in,輸入賬号和密碼 登陸
登陸成功:
nexus的倉庫有4種類型:
1.hosted,宿主倉庫,部署自己的jar到這個類型的倉庫,包括releases和snapshot兩部分,Releases公司内部釋出版本倉庫、 Snapshots 公司内部測試版本倉庫
2.proxy,代理倉庫,用于代理遠端的公共倉庫,如maven中央倉庫,使用者連接配接私服,私服自動去中央倉庫下載下傳jar包或者插件。
3.group,倉庫組,用來合并多個hosted/proxy倉庫,通常我們配置自己的maven連接配接倉庫組。
4.virtual(虛拟):相容Maven1 版本的jar或者插件
nexus倉庫預設在sonatype-work目錄中:
central:代理倉庫,代理中央倉庫
apache-snapshots:代理倉庫
存儲snapshots構件,代理位址https://repository.apache.org/snapshots/
central-m1:virtual類型倉庫,相容Maven1 版本的jar或者插件
releases:本地倉庫,存儲releases構件。
snapshots:本地倉庫,存儲snapshots構件。
thirdparty:第三方倉庫
public:倉庫組
需求 :将ssh_dao的這個工程打成jar包,并放入到私服上去.
配置
第一步: 需要在用戶端即部署dao工程的電腦上配置 maven環境,并修改 settings.xml 檔案,配置連接配接私服的使用者和密碼 。
此使用者名和密碼用于私服校驗,因為私服需要知道上傳的賬号和密碼 是否和私服中的賬号和密碼 一緻。
<server>
<id>releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
releases 連接配接釋出版本項目倉庫
snapshots 連接配接測試版本項目倉庫
第二步: 配置項目pom.xml
配置私服倉庫的位址,本公司的自己的jar包會上傳到私服的宿主倉庫,根據工程的版本号決定上傳到哪個宿主倉庫,如果版本為release則上傳到私服的release倉庫,如果版本為snapshot則上傳到私服的snapshot倉庫
<distributionManagement>
<repository>
<id>releases</id>
<url>http://localhost:8081/nexus/content/repositories/releases/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<url>http://localhost:8081/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>
注意:pom.xml這裡<id> 和 settings.xml 配置 <id> 對應!
測試
将項目dao工程打成jar包釋出到私服:
1、首先啟動nexus
2、對dao工程執行deploy指令
從私服下載下傳jar包
需求
沒有配置nexus之前,如果本地倉庫沒有,去中央倉庫下載下傳,通常在企業中會在區域網路内部署一台私服伺服器,有了私服本地項目首先去本地倉庫找jar,如果沒有找到則連接配接私服從私服下載下傳jar包,如果私服沒有jar包私服同時作為代理伺服器從中央倉庫下載下傳jar包,這樣做的好處是一方面由私服對公司項目的依賴jar包統一管理,一方面提高下載下傳速度,項目連接配接私服下載下傳jar包的速度要比項目連接配接中央倉庫的速度快的多。
本例子測試從私服下載下傳dao 工程jar包。
管理倉庫組
nexus中包括很多倉庫,hosted中存放的是企業自己釋出的jar包及第三方公司的jar包,proxy中存放的是中央倉庫的jar,為了友善從私服下載下傳jar包可以将多個倉庫組成一個倉庫組,每個工程需要連接配接私服的倉庫組下載下傳jar包。
打開nexus配置倉庫組,如下圖:
上圖中倉庫組包括了本地倉庫、代理倉庫等。
在setting.xml中配置倉庫
在用戶端的setting.xml中配置私服的倉庫,由于setting.xml中沒有repositories的配置标簽需要使用profile定義倉庫。
<profile>
<!--profile的id-->
<id>dev</id>
<repositories>
<repository>
<!--倉庫id,repositories可以配置多個倉庫,保證id不重複-->
<id>nexus</id>
<!--倉庫位址,即nexus倉庫組的位址-->
<url>http://localhost:8081/nexus/content/groups/public/</url>
<!--是否下載下傳releases構件-->
<releases>
<enabled>true</enabled>
</releases>
<!--是否下載下傳snapshots構件-->
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<!-- 插件倉庫,maven的運作依賴插件,也需要從私服下載下傳插件 -->
<pluginRepository>
<!-- 插件倉庫的id不允許重複,如果重複後邊配置會覆寫前邊 -->
<id>public</id>
<name>Public Repositories</name>
<url>http://localhost:8081/nexus/content/groups/public/</url>
</pluginRepository>
</pluginRepositories>
</profile>
使用profile定義倉庫需要激活才可生效。
<activeProfiles>
<activeProfile>dev</activeProfile>
</activeProfiles>
配置成功後通過eclipse檢視有效pom,有效pom是maven軟體最終使用的pom内容,程式員不直接編輯有效pom,打開有效pom
有效pom内容如下:
下邊的pom内容中有兩個倉庫位址,maven會先從前邊的倉庫的找,如果找不到jar包再從下邊的找,進而就實作了從私服下載下傳jar包。
<repositories>
<repository>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
<id>public</id>
<name>Public Repositories</name>
<url>http://localhost:8081/nexus/content/groups/public/</url>
</repository>
<repository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>Central Repository</name>
<url>https://repo.maven.apache.org/maven2</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>public</id>
<name>Public Repositories</name>
<url>http://localhost:8081/nexus/content/groups/public/</url>
</pluginRepository>
<pluginRepository>
<releases>
<updatePolicy>never</updatePolicy>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>Central Repository</name>
<url>https://repo.maven.apache.org/maven2</url>
</pluginRepository>
</pluginRepositories>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.baidu.maven</groupId>
<artifactId>maven-crm</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>web工程,包括jsp、action等</name>
<description>web工程,包括jsp、action等</description>
<!-- 為了确定每個架構的版本号 -->
<!-- 鎖定版本 -->
<properties>
<spring.version>4.2.4.RELEASE</spring.version>
<struts2.version>2.3.24</struts2.version>
<hibernate.version>5.0.7.Final</hibernate.version>
<slf4j.version>1.6.6</slf4j.version>
<log4j.version>1.2.12</log4j.version>
<shiro.version>1.2.3</shiro.version>
<cxf.version>3.0.1</cxf.version>
<c3p0.version>0.9.1.2</c3p0.version>
<mysql.version>5.1.6</mysql.version>
</properties>
<!-- 鎖定版本,struts2-2.3.24、spring4.2.4、hibernate5.0.7 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>${struts2.version}</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
<version>${struts2.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.4</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.1.37</version>
</dependency>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.1</version>
</dependency>
<!-- <dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency> -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<!-- jstl -->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- shiro -->
<!-- apache shiro dependencies -->
<!-- <dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-all</artifactId>
<version>${shiro.version}</version>
</dependency> -->
<!-- spring -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.6.8</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- struts2 begin -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>${struts2.version}</version>
<exclusions>
<exclusion>
<artifactId>javassist</artifactId>
<groupId>javassist</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
<version>${struts2.version}</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-json-plugin</artifactId>
<version>${struts2.version}</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-convention-plugin</artifactId>
<version>${struts2.version}</version>
</dependency>
<!-- struts2 end -->
<!-- hibernate begin -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.2.1.Final</version>
</dependency>
<!-- hibernate end -->
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>${c3p0.version}</version>
</dependency>
<!-- <dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>${cxf.version}</version>
</dependency> -->
<!-- log start -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
</dependency>
<!-- log end -->
<!-- Javamail -->
<!-- <dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.4</version>
</dependency> -->
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
<!-- <dependency>
<groupId>org.codehaus.xfire</groupId>
<artifactId>xfire-core</artifactId>
<version>1.2.6</version>
</dependency> -->
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6</version>
</dependency>
<!-- <dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.11</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.11</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>3.11</version>
</dependency> -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<!-- <dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2.0.4.0</version>
</dependency> -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache-core</artifactId>
<version>2.6.6</version>
</dependency>
</dependencies>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<encoding>UTF-8</encoding>
<showWarnings>true</showWarnings>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
<!-- parnet節點指定子子產品的 父工程的坐标資訊 -->
<parent>
<groupId>cn.baidu</groupId>
<artifactId>ssh_maven</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>ssh_dao</artifactId>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
</dependencies>
<!-- 上傳jar包使用指令 deploey部署到私服 後本地倉庫會不會有 -->
<distributionManagement>
<repository>
<id>releases</id>
<url>http://localhost:8081/nexus/content/repositories/releases/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<url>http://localhost:8081/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>
</project>
applicationContext-dao.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
<!-- dataSource資料源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver"></property>
<property name="jdbcUrl" value="jdbc:mysql:///maven_ssh"></property>
<property name="user" value="root"></property>
<property name="password" value="root"></property>
</bean>
<!-- seesionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<!-- 資料源 -->
<property name="dataSource" ref="dataSource"></property>
<!-- hibernate的配置 --><!-- 實體類映射 -->
<property name="configLocations" value="classpath:hibernate.cfg.xml"></property>
</bean>
<!-- 事務的管理器 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!-- 事務的通知 -->
<tx:advice id="txAdvice" >
<tx:attributes>
<tx:method name="save*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="delete*" propagation="REQUIRED"/>
<tx:method name="find*" read-only="true"/>
</tx:attributes>
</tx:advice>
<!-- 切面配置 -->
<aop:config>
<!-- 切入點配置 -->
<aop:pointcut expression="execution(* cn.baidu.service.*.*(..))" id="pointcut"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="pointcut"/>
</aop:config>
<!-- 自己的持久層dao -->
<bean id="customerDao" class="cn.baidu.dao.impl.CustomerDaoImpl">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
</beans>
複制