SlideShare a Scribd company logo
1 of 23
Maven x Mongo x Spring
簡裕維
Apache Maven
• 函式庫管理
• 專案管理
• 套件管理
• pom.xml:maven 的設定檔
• 下載:
https://maven.apache.org/download.cgi
Apache Maven-函式庫管理
• Maven Repository:
– jar 線上儲存庫
• jar 電腦 local 端的集中放置處
– .m2 目錄
Apache Maven-專案管理
• jar:Java Archive
• war:Web Archive
• pom:Project Object Model
– 此專案內可包多個小專案,小專案可以是 jar、
war、pom
– 多層次管理
Apache Maven-套件管理
• 編譯器設定
– 設定 java rumtime、jdk的版本
– 預設記憶體大小
• Web container 設定
– 立即使用 tomcat 執行網頁
– mvn tomcat7:run
• 其他套件
– 與CI server 結合
– Deploy 到 Maven Repository
Apache Maven-入門建置
• http://gaduo-chien-
blog.logdown.com/posts/2014/04/13/
apache-maven-build-maven-project
Apache Maven-pom.xml
• groupId:專案組織名稱,edu.tcu.mi.xxx
• artifactId:該專案名稱
• version:該專案版本號
• packaging:專案打包型態,jar、war、pom
• parent:父專案
• properties:變數設定
• modules:子專案模組
• dependencies:相依函式庫
• build:建置用plugin設定
Apache Maven-專案架構
helloworld/
├── pom.xml
├── lib
├── target
└── src
├── main
│ └── java
│ │ └── edu
│ │ └── tcu
│ │ └── mi
│ │ └── App.java
│ └── resources
│
│
└── test
└── java
│ └── edu
│ └── tcu
│ └── mi
│ └── AppTest.java
└── resources
Apache Maven-常用指令
• 建置
– mvn install
• 清除 chache
– mvn clean
• 建置時,略過單元測試
– mvn install –DskipTests
• 連著使用
– mvn clean install –DskipTests
• 立即執行 tomcat
– mvn tomcat7:run
– 前提須搭配其他設定
個人常用函式庫
• guava:
– 通用函式
– https://github.com/google/guava/wiki
• gson:json 與物件互相轉換
• junit:單元測試
• log4j:收集 log
• lombok:@Getter @Setter
• joda-time:時間型態的計算
• jetm:執行時間的收集與報告
Mongodb
• 文件儲存資料庫
• json 格式:BSON (binary json)
• javascript
• schema less
• no join
– 但還是有關聯
• no transaction
名詞對映
Mongo 傳統關聯式資料庫
Database Database
Collection Table
Mongodb Server
• 下載&解壓縮
– https://fastdl.mongodb.org/win32/mongodb-win32-
x86_64-3.0.7.zip
• 設定環境變數 $MONGO_HOME/bin
• 建立資料儲存位置
– $USER/mongo/data/data01
• >:表示「>」後面的敘述為指令
• 無認證授權-啟動 mongo
> mongod.exe –dbpath $USER/mongo/data/data01
– port 預設為 27017
Mongodb Client
• mongo shell
– mongo.exe
– javascript
• GUI Client:MongoChef
– http://3t.io/mongochef/download/
Mongodb Client-mongo shell
• 連線至 server
> mongo –host 127.0.0.1 –port 27017
• 常用指令
– https://docs.mongodb.org/manual/refer
ence/mongo-shell/
Mongodb Client-mongo shell(2)
• 顯示所有資料庫
> show dbs
• 使用某一個資料庫或新增資料庫
> use <database>
> use pet
• 顯示該資料庫中的所有的 collections
> show collections
• 新增Collection
– https://docs.mongodb.org/manual/reference/method/db.createCollection/
> db.createCollection(“user”)
Mongodb Client-mongo shell(3)
• 已經指向某一個 database 時
• 新增資料
> db.$Collection.insert
> db.user.insert({“name”:”gaduo”});
> db.user.insert({
“name”:”test”,
“psw”:”000test”
});
• schema less
Mongodb Client-mongo shell(4)
• https://docs.mongodb.org/manual/tutorial/query-
documents/
• Query
> db.$Collection.find()
> db.$Collection.find().pretty()
> db.user.find({})
> db.user.find({“name”:”gaduo”})
• PK: _id
– ObjectId(“xxx”)
– String
• FK: <collection>.$id
Spring-data-mongo
• Maven Dependency
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
<version>1.2.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.9</version>
</dependency>
• spring-petclinic-example
– https://github.com/Gaduo/spring-petclinic-example
business-context.xml
<context:component-scan base-package="edu.tcu.mi.spring.web.service" />
<beans:beans profile="mongodb">
<mongo:repositories base-package="edu.tcu.mi.spring.web.repository.mongo"/>
<context:property-placeholder location="classpath:data-access.properties" />
<mongo:mongo id="mongo" host="${mongo.host.name}" port="${mongo.host.port}"/>
<beans:bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<beans:constructor-arg ref="mongo" />
<beans:constructor-arg value="${mongo.databaseName}" />
</beans:bean>
</beans:beans>
Spring-data-mongo
@Document
@JsonSerialize(include=JsonSerialize.Inclusion.NON_EMPTY)
public class Pet extends BaseEntity {
protected String name;
public Pet(){
id = new ObjectId().toString();
}
@Override
public String toString() {
return new Gson().toJson(this);
}
// getter … seter …
}
Spring Mongo/JPA Repository
Spring Mongo/JPA Repository

More Related Content

What's hot

Node.js在淘宝的应用实践
Node.js在淘宝的应用实践Node.js在淘宝的应用实践
Node.js在淘宝的应用实践taobao.com
 
前端MVVM框架安全
前端MVVM框架安全前端MVVM框架安全
前端MVVM框架安全Borg Han
 
Make your web faster
Make your web fasterMake your web faster
Make your web faster德生 谭
 
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)Will Huang
 
Hacking Nginx at Taobao
Hacking Nginx at TaobaoHacking Nginx at Taobao
Hacking Nginx at TaobaoJoshua Zhu
 
CP 值很高的 Gulp
CP 值很高的 GulpCP 值很高的 Gulp
CP 值很高的 GulpYvonne Yu
 
RxJS 6 新手入門
RxJS 6 新手入門RxJS 6 新手入門
RxJS 6 新手入門Will Huang
 
20111018 zhouchen share
20111018 zhouchen share20111018 zhouchen share
20111018 zhouchen sharezcbug
 
Npm 套件管理 & 常用開發工具介紹
Npm 套件管理 & 常用開發工具介紹Npm 套件管理 & 常用開發工具介紹
Npm 套件管理 & 常用開發工具介紹wantingj
 
如何针对业务做DB优化
如何针对业务做DB优化如何针对业务做DB优化
如何针对业务做DB优化Jinrong Ye
 
NodeJS基礎教學&簡介
NodeJS基礎教學&簡介NodeJS基礎教學&簡介
NodeJS基礎教學&簡介GO LL
 
Fiddler for chrom extension
Fiddler for chrom extensionFiddler for chrom extension
Fiddler for chrom extensionWelefen Lee
 
快速入坑 Node.js - 0613 SITCON 雲林定期聚
快速入坑 Node.js - 0613 SITCON 雲林定期聚快速入坑 Node.js - 0613 SITCON 雲林定期聚
快速入坑 Node.js - 0613 SITCON 雲林定期聚Lorex L. Yang
 
使用 Visual Studio Code 建構 JavaScript 應用程式
使用 Visual Studio Code 建構 JavaScript 應用程式使用 Visual Studio Code 建構 JavaScript 應用程式
使用 Visual Studio Code 建構 JavaScript 應用程式Will Huang
 
KISSY Mechanism
KISSY MechanismKISSY Mechanism
KISSY Mechanismlifesinger
 
Php study.20130110
Php study.20130110Php study.20130110
Php study.20130110bngoogle
 
静态项目管理工具 - opm
静态项目管理工具 - opm静态项目管理工具 - opm
静态项目管理工具 - opmgoto100
 
对MySQL的一些改进想法和实现
对MySQL的一些改进想法和实现对MySQL的一些改进想法和实现
对MySQL的一些改进想法和实现Lixun Peng
 
Intro-to-SeaJS
Intro-to-SeaJSIntro-to-SeaJS
Intro-to-SeaJSlifesinger
 

What's hot (20)

Node.js在淘宝的应用实践
Node.js在淘宝的应用实践Node.js在淘宝的应用实践
Node.js在淘宝的应用实践
 
Mesos intro
Mesos introMesos intro
Mesos intro
 
前端MVVM框架安全
前端MVVM框架安全前端MVVM框架安全
前端MVVM框架安全
 
Make your web faster
Make your web fasterMake your web faster
Make your web faster
 
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
 
Hacking Nginx at Taobao
Hacking Nginx at TaobaoHacking Nginx at Taobao
Hacking Nginx at Taobao
 
CP 值很高的 Gulp
CP 值很高的 GulpCP 值很高的 Gulp
CP 值很高的 Gulp
 
RxJS 6 新手入門
RxJS 6 新手入門RxJS 6 新手入門
RxJS 6 新手入門
 
20111018 zhouchen share
20111018 zhouchen share20111018 zhouchen share
20111018 zhouchen share
 
Npm 套件管理 & 常用開發工具介紹
Npm 套件管理 & 常用開發工具介紹Npm 套件管理 & 常用開發工具介紹
Npm 套件管理 & 常用開發工具介紹
 
如何针对业务做DB优化
如何针对业务做DB优化如何针对业务做DB优化
如何针对业务做DB优化
 
NodeJS基礎教學&簡介
NodeJS基礎教學&簡介NodeJS基礎教學&簡介
NodeJS基礎教學&簡介
 
Fiddler for chrom extension
Fiddler for chrom extensionFiddler for chrom extension
Fiddler for chrom extension
 
快速入坑 Node.js - 0613 SITCON 雲林定期聚
快速入坑 Node.js - 0613 SITCON 雲林定期聚快速入坑 Node.js - 0613 SITCON 雲林定期聚
快速入坑 Node.js - 0613 SITCON 雲林定期聚
 
使用 Visual Studio Code 建構 JavaScript 應用程式
使用 Visual Studio Code 建構 JavaScript 應用程式使用 Visual Studio Code 建構 JavaScript 應用程式
使用 Visual Studio Code 建構 JavaScript 應用程式
 
KISSY Mechanism
KISSY MechanismKISSY Mechanism
KISSY Mechanism
 
Php study.20130110
Php study.20130110Php study.20130110
Php study.20130110
 
静态项目管理工具 - opm
静态项目管理工具 - opm静态项目管理工具 - opm
静态项目管理工具 - opm
 
对MySQL的一些改进想法和实现
对MySQL的一些改进想法和实现对MySQL的一些改进想法和实现
对MySQL的一些改进想法和实现
 
Intro-to-SeaJS
Intro-to-SeaJSIntro-to-SeaJS
Intro-to-SeaJS
 

Viewers also liked

In de voetsporen van Paulus
In de voetsporen van PaulusIn de voetsporen van Paulus
In de voetsporen van Pauluspgvvnl
 
I love you!! from deana
I love you!! from deanaI love you!! from deana
I love you!! from deanaDawn Whaley
 
Fanvertize: The Problem with Traditional Marketing
Fanvertize: The Problem with Traditional MarketingFanvertize: The Problem with Traditional Marketing
Fanvertize: The Problem with Traditional MarketingMatthew Mack
 
Division Six Bikes Branding Concept Plan
Division Six Bikes Branding Concept PlanDivision Six Bikes Branding Concept Plan
Division Six Bikes Branding Concept PlanMatthew Mack
 
Empower Group Franchise Concept Plan
Empower Group Franchise Concept PlanEmpower Group Franchise Concept Plan
Empower Group Franchise Concept PlanMatthew Mack
 

Viewers also liked (7)

In de voetsporen van Paulus
In de voetsporen van PaulusIn de voetsporen van Paulus
In de voetsporen van Paulus
 
I love you!! from deana
I love you!! from deanaI love you!! from deana
I love you!! from deana
 
You as an entrepreneur
You as an entrepreneurYou as an entrepreneur
You as an entrepreneur
 
Empower Franchise
Empower FranchiseEmpower Franchise
Empower Franchise
 
Fanvertize: The Problem with Traditional Marketing
Fanvertize: The Problem with Traditional MarketingFanvertize: The Problem with Traditional Marketing
Fanvertize: The Problem with Traditional Marketing
 
Division Six Bikes Branding Concept Plan
Division Six Bikes Branding Concept PlanDivision Six Bikes Branding Concept Plan
Division Six Bikes Branding Concept Plan
 
Empower Group Franchise Concept Plan
Empower Group Franchise Concept PlanEmpower Group Franchise Concept Plan
Empower Group Franchise Concept Plan
 

Similar to Maven & mongo & sring

Maven初级培训
Maven初级培训Maven初级培训
Maven初级培训Cody Zhang
 
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩Wen-Tien Chang
 
使用Nginx轻松实现开源负载均衡
使用Nginx轻松实现开源负载均衡使用Nginx轻松实现开源负载均衡
使用Nginx轻松实现开源负载均衡cachowu
 
Node js实践
Node js实践Node js实践
Node js实践myzykj
 
Kvmopt osforce
Kvmopt osforceKvmopt osforce
Kvmopt osforcemeecheng
 
Maven初级培训
Maven初级培训Maven初级培训
Maven初级培训ytsolar
 
合久必分,分久必合
合久必分,分久必合合久必分,分久必合
合久必分,分久必合Qiangning Hong
 
快!快!快! 互联网第一条军规
快!快!快! 互联网第一条军规快!快!快! 互联网第一条军规
快!快!快! 互联网第一条军规yangdj
 
DAE 新变化介绍
DAE 新变化介绍DAE 新变化介绍
DAE 新变化介绍Tianwei Liu
 
X64服务器 lamp服务器部署标准 new
X64服务器 lamp服务器部署标准 newX64服务器 lamp服务器部署标准 new
X64服务器 lamp服务器部署标准 newYiwei Ma
 
ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索Will Huang
 
02.web sphere培训 应用websphere
02.web sphere培训 应用websphere02.web sphere培训 应用websphere
02.web sphere培训 应用webspherelittlecong
 
.NET Conf Taiwan 2022 - Tauri - 前端人員也能打造小巧快速的 Windows 應用程式
.NET Conf Taiwan 2022 - Tauri -前端人員也能打造小巧快速的 Windows 應用程式.NET Conf Taiwan 2022 - Tauri -前端人員也能打造小巧快速的 Windows 應用程式
.NET Conf Taiwan 2022 - Tauri - 前端人員也能打造小巧快速的 Windows 應用程式升煌 黃
 
Real time web实时信息流推送
Real time web实时信息流推送Real time web实时信息流推送
Real time web实时信息流推送yongboy
 
Real-Time Web实时信息流推送
Real-Time Web实时信息流推送Real-Time Web实时信息流推送
Real-Time Web实时信息流推送yongboy
 
Node.js长连接开发实践
Node.js长连接开发实践Node.js长连接开发实践
Node.js长连接开发实践longhao
 
Track2 -刘继伟--openstack in gamewave
Track2 -刘继伟--openstack in gamewaveTrack2 -刘继伟--openstack in gamewave
Track2 -刘继伟--openstack in gamewaveOpenCity Community
 

Similar to Maven & mongo & sring (20)

Maven初级培训
Maven初级培训Maven初级培训
Maven初级培训
 
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
 
使用Nginx轻松实现开源负载均衡
使用Nginx轻松实现开源负载均衡使用Nginx轻松实现开源负载均衡
使用Nginx轻松实现开源负载均衡
 
Node js实践
Node js实践Node js实践
Node js实践
 
Kvmopt osforce
Kvmopt osforceKvmopt osforce
Kvmopt osforce
 
Maven初级培训
Maven初级培训Maven初级培训
Maven初级培训
 
合久必分,分久必合
合久必分,分久必合合久必分,分久必合
合久必分,分久必合
 
快!快!快! 互联网第一条军规
快!快!快! 互联网第一条军规快!快!快! 互联网第一条军规
快!快!快! 互联网第一条军规
 
DAE 新变化介绍
DAE 新变化介绍DAE 新变化介绍
DAE 新变化介绍
 
X64服务器 lamp服务器部署标准 new
X64服务器 lamp服务器部署标准 newX64服务器 lamp服务器部署标准 new
X64服务器 lamp服务器部署标准 new
 
ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索
 
Html5
Html5Html5
Html5
 
美团技术团队 - KVM性能优化
美团技术团队 - KVM性能优化美团技术团队 - KVM性能优化
美团技术团队 - KVM性能优化
 
02.web sphere培训 应用websphere
02.web sphere培训 应用websphere02.web sphere培训 应用websphere
02.web sphere培训 应用websphere
 
.NET Conf Taiwan 2022 - Tauri - 前端人員也能打造小巧快速的 Windows 應用程式
.NET Conf Taiwan 2022 - Tauri -前端人員也能打造小巧快速的 Windows 應用程式.NET Conf Taiwan 2022 - Tauri -前端人員也能打造小巧快速的 Windows 應用程式
.NET Conf Taiwan 2022 - Tauri - 前端人員也能打造小巧快速的 Windows 應用程式
 
Real time web实时信息流推送
Real time web实时信息流推送Real time web实时信息流推送
Real time web实时信息流推送
 
Real-Time Web实时信息流推送
Real-Time Web实时信息流推送Real-Time Web实时信息流推送
Real-Time Web实时信息流推送
 
Node.js长连接开发实践
Node.js长连接开发实践Node.js长连接开发实践
Node.js长连接开发实践
 
OPM
OPMOPM
OPM
 
Track2 -刘继伟--openstack in gamewave
Track2 -刘继伟--openstack in gamewaveTrack2 -刘继伟--openstack in gamewave
Track2 -刘继伟--openstack in gamewave
 

Maven & mongo & sring