日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java web scala_spring boot+scala编写web接口

發(fā)布時(shí)間:2023/12/10 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java web scala_spring boot+scala编写web接口 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本人是Java開發(fā)者,有面向?qū)ο蟮幕A(chǔ),而Scala也是面向?qū)ο蟮恼Z言,學(xué)習(xí)后可快速入門。通過學(xué)習(xí)Scala的面向?qū)ο?和java面向?qū)ο箢愃?、Scala的高級函數(shù)(map,reduce等,和Java8中的stream編程類似)、Scala的隱式轉(zhuǎn)換(在Java中可通過spring aop實(shí)現(xiàn)增強(qiáng),Scala的隱式轉(zhuǎn)換較為方便)、Scala的模式匹配(類似Java的switch語句,但使用的訪問很廣)。這里通過Scala結(jié)合spring boot來實(shí)現(xiàn)spring mvc接口的開發(fā)。

添加pom依賴

先搭建spring boot項(xiàng)目,這里不細(xì)說

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-starter-test

test

org.scala-lang

scala-library

${scala.version}

org.springframework.boot

spring-boot-starter-data-jpa

mysql

mysql-connector-java

org.springframework.boot

spring-boot-maven-plugin

net.alchim31.maven

scala-maven-plugin

3.2.1

compile-scala

compile

add-source

compile

test-compile-scala

test-compile

add-source

testCompile

incremental

${scala.version}/.,bvc;

-deprecation

-Xms64m

-Xmx1024m

其中Scala的plugin用于編譯、測試、打包scala的程序

配置

server:

port: 7777

spring:

datasource:

driver-class-name: com.mysql.jdbc.Driver #數(shù)據(jù)庫驅(qū)動

url: jdbc:mysql://localhost:3306/test?useSSL=false #本地?cái)?shù)據(jù)庫url,先在本地?cái)?shù)據(jù)庫中建立test這個(gè)庫

username: root #數(shù)據(jù)庫用戶名

password: 191016 #數(shù)據(jù)庫密碼

jpa:

hibernate:

ddl-auto: update #每次運(yùn)行程序,沒有表格會新建表格,表內(nèi)有數(shù)據(jù)不會清空,只會更新

database: mysql

項(xiàng)目結(jié)構(gòu)

image.png

其中controller層為程序入口

domain層為實(shí)體類

service層為業(yè)務(wù)邏輯層,提供事務(wù)控制

repository層為數(shù)據(jù)持久化層

實(shí)體類

@Entity

@Table

class Person {

@Id

@GeneratedValue

@BeanProperty

var id:Integer = _

@BeanProperty

var name:String = _

@BeanProperty

var sex:String = _

}

scala中無get/set方法

repository持久化層

trait PersonRepository extends CrudRepository[Person,Integer]{

}

trait類似于Java中接口的含義,這里繼承jpa的基本Repository

service層

@Service

class PersonService @Autowired()(personRepository: PersonRepository) {

/**

* 保存

*

* @param person 保存對象

* @return Person

*/

@Transactional

def save(person: Person): Person = {

personRepository.save(person)

}

/**

* 根據(jù)Id查詢

*

* @param id 查詢參數(shù)

* @return Person

*/

def selectPersonById(id: Integer): Person = {

personRepository.findOne(id)

}

}

這里的自動注入的方式和java中不相同,是寫在類名的后面

controller層

@RestController

@RequestMapping(Array("/v1/person"))

class PersonController @Autowired()(personService: PersonService) {

@PostMapping

def save(@RequestBody person: Person): Person = {

personService.save(person)

}

@GetMapping

def selectPersonById(@RequestParam id: Integer): Person = {

personService.selectPersonById(id)

}

}

這里的映射路徑和java中不同,必須傳一個(gè)數(shù)組,而java中是傳遞一個(gè)字符串

測試

啟動項(xiàng)目,通過postman測試

保存:

image.png

查看數(shù)據(jù)庫,保存成功。

image.png

查詢:

image.png

注意

Java和Scala可以相互調(diào)用,如Java寫的工具類,在Scala可直接使用,不用在重新寫一套Scala的工具類,反之亦然。

總結(jié)

以上是生活随笔為你收集整理的java web scala_spring boot+scala编写web接口的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。