使用kotlin編寫spring cloud微服務的過程
創建工程
使用idea的spring initializr創建一個項目,語言選擇kotlin, 類型為gradle。
根據需要選擇依賴
配置文件
yml或者properties文件和java是完全一樣的,這裡不詳細說明
修改build.gradle.kts中的參數:
plugins { //spring boot版本 id("org.springframework.boot") version "2.3.3.RELEASE" //自動依賴包版本管理 id("io.spring.dependency-management") version "1.0.10.RELEASE" ... } //spring cloud 版本 extra["springCloudVersion"] = "Hoxton.SR8" repositories { //本地maven maven { url = uri("http://192.168.1.150:8081/repository/maven-public/") credentials { username = "admin" password = "admin" } } maven { url = uri("https://repo.spring.io/milestone") } jcenter { content { // just allow to include kotlinx projects // detekt needs 'kotlinx-html' for the html report includeGroup("org.jetbrains.kotlinx") } } } ...
Application
/** * 商品服務 */ @SpringBootApplication class ProductApplication /** * 程序入口 */ fun main(args: Array<String>) { runApplication<ProductApplication>(*args) }
這是自動生成程序入口,不用修改
編寫controller
@RestController @RequestMapping("v2/test") class SpuManagerController(val xService: XService) { @PostMapping("") fun addSpu(@RequestBody addXxVO: AddXxVO):Long{ return xrService.addX(addXxVO) } }
這是一個controller,通過構造函數註入依賴。
JPA
實體類:
@Entity(name = "table_name") @DynamicInsert //不插入null @DynamicUpdate class XxPO( var code:String, var name:String, var createDate:Date?=null, var updatedDate: Date?=null, @Id @GeneratedValue(strategy = GenerationType.IDENTITY) var id:Long?=null)
Repository:
interface XxRepository :CrudRepository<SpuPO,Long>
由於沒有自定義的方法,直接定義一個接口即可。
Service
略
單元測試
@SpringBootTest @AutoConfigureMockMvc @Transactional class SpuManagerControllerTests @Autowired constructor(val mockMvc: MockMvc, val xxRepository : XxRepository ) { @Test fun testAddSpu() { val vo= AddXxVO("test_code", "test_name") mockMvc.perform( MockMvcRequestBuilders.post("/v2/test") .contentType(MediaType.APPLICATION_JSON) .content(JSON.toJSONString(vo)) ).andExpect { status().is2xxSuccessful } .andReturn() .response .contentAsString .apply { val id = this.toLong() val result = xxRepository .findById(id) assert(result.isPresent) } } }
註意 @Test對應的類是
org.junit.jupiter.api.Test
到此這篇關於使用kotlin編寫spring cloud微服務的文章就介紹到這瞭,更多相關kotlin spring cloud微服務內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- kotlin源碼結構層次詳解
- Spring Cloud服務安全連接方式
- SpringBoot單元測試使用@Test沒有run方法的解決方案
- Kotlin編程基礎語法編碼規范
- Spring Boot簡介與快速搭建詳細步驟