# -*- mode: ruby -*-
# vi: set ft=ruby :
datadisk1 = '.\data_disk1.vdi'
Vagrant.configure("2") do |config|
config.vm.box = "centos/7"
config.vm.synced_folder ".", "/vagrant", disabled: true
config.vm.provider "virtualbox" do |vb|
vb.gui = false
vb.cpus = 1
vb.memory = "1024"
vb.name = "Ceph-Admin"
unless File.exist?(datadisk1)
vb.customize ['createhd', '--filename', datadisk1, '--size', 1 * 1024]
end
vb.customize ['storageattach', :id, '--storagectl', 'IDE', '--port', 1, '--device', 0, '--type', 'hdd', '--medium', datadisk1]
# Adding a SATA controller that allows 4 hard drives
#vb.customize ['storagectl', :id, '--name', 'SATA Controller', '--add', 'sata', '--portcount', 4]
# Attaching the disks using the SATA controller
#vb.customize ['storageattach', :id, '--storagectl', 'SATA Controller', '--port', 0, '--device', 0, '--type', 'hdd', '--medium', datadisk1]
end
end
新版本的 vagrant 配置有點不同,所以想用舊的配置檔跑 VM 裡面的 Docker 會失敗
新的要加上
force_host_vm = true
為什麼要加就是自己看一下說明吧,反正就改了
https://www.vagrantup.com/docs/docker/configuration.html#force_host_vm
前兩篇有講到 entity 還可以進一步定義關聯的資源 URL,讓前端可以依照定義來取得資源,而不是一個寫死的網址,避免萬一 URL 有變動的話 APP 也得必須改版。
就像 links 的效果
前端就可以固定抓取 project 的 value 就可以取得 project 的相關資訊,而不必關心 project url 的變動
{
"projectId":"QpbR7viWdy",
"projectName":"123",
"score":72,
"createdDate":null,
"createdBy":null,
"lastModifiedDate":"2017-07-20T09:24:28Z",
"lastModifiedBy":null,
"_links":{
"self":{
"href":"http://localhost:8080/scoreProjects/n5NehJba7k"
},
"scoreProject":{
"href":"http://localhost:8080/scoreProjects/n5NehJba7k"
},
"project":{
"href":"http://localhost:8080/projects/QpbR7viWdy"
},
"scoreProjectMembers":{
"href":"http://localhost:8080/scoreProjectMembers/search/findByProjectId?projectId=QpbR7viWdy"
},
"projectMembers":{
"href":"http://localhost:8080/api/project/QpbR7viWdy/members"
}
}
}
Spring 中使用 @Valid 驗證後回覆的格式並不是 json ,其實很不好處理 ,目前是 定義 ControllerAdvice 來做一個轉換處理
還有另一個是 HystrixBadRequestException ,因為有用到 spring-cloud-feign 的功能,自然是支援斷路保護機制 但是這個HystrixBadRequestException 好像沒辦法把對方的錯誤訊息放進去我們的回覆資料內,對方只會看到 message=BadRequest 之類的,所以做一下處理
Read on →有關如何自訂 Page 物件與仿照 SpringDataRest 格式
為什麼要仿照? 主要原因
- SpringDataRest 提供的是 HATEOAS (Hypermedia As The Engine Of Application State)
- org.springframework.data.domain.Page 轉成 json 跟 SpringDataRest 不一樣
寫Spring還真的很少自爆就停止服務了,大概都是被 OS 層級終止(記憶體吃太多也是事實)
但線上服務還是加個服務監控怕真的掛了沒人知,台灣人用line比較多那再加個Line通知比較即時吧
有些舊系統前端是傳統 apache + ajp13 接後面 Tomcat 服務
這個時候可以讓 springboot 也接收這種 protocol
Swagger 在工程師或測試方面幫助很大,但有些人員非工程背景,拿到 Jar 檔也不會執行,也就看不到 API 規格,所以還是需要一份文件,這時候我們既然都定義好 Swagger 了,直接用來輸出就最方便
流程來說是 測試程式產出 adoc 檔 -> plugins org.asciidoctor.convert 轉換成 html 等其他格式
Read on →