java web scala_spring boot+scala编写web接口
本人是Java開發(fā)者,有面向對象的基礎,而Scala也是面向對象的語言,學習后可快速入門。通過學習Scala的面向對象(和java面向對象類似)、Scala的高級函數(shù)(map,reduce等,和Java8中的stream編程類似)、Scala的隱式轉換(在Java中可通過spring aop實現(xiàn)增強,Scala的隱式轉換較為方便)、Scala的模式匹配(類似Java的switch語句,但使用的訪問很廣)。這里通過Scala結合spring boot來實現(xiàn)spring mvc接口的開發(fā)。
添加pom依賴
先搭建spring boot項目,這里不細說
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ù)據庫驅動
url: jdbc:mysql://localhost:3306/test?useSSL=false #本地數(shù)據庫url,先在本地數(shù)據庫中建立test這個庫
username: root #數(shù)據庫用戶名
password: 191016 #數(shù)據庫密碼
jpa:
hibernate:
ddl-auto: update #每次運行程序,沒有表格會新建表格,表內有數(shù)據不會清空,只會更新
database: mysql
項目結構
image.png
其中controller層為程序入口
domain層為實體類
service層為業(yè)務邏輯層,提供事務控制
repository層為數(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)
}
/**
* 根據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中不同,必須傳一個數(shù)組,而java中是傳遞一個字符串
測試
啟動項目,通過postman測試
保存:
image.png
查看數(shù)據庫,保存成功。
image.png
查詢:
image.png
注意
Java和Scala可以相互調用,如Java寫的工具類,在Scala可直接使用,不用在重新寫一套Scala的工具類,反之亦然。
總結
以上是生活随笔為你收集整理的java web scala_spring boot+scala编写web接口的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nginx 上传 文件超时设置_Ngin
- 下一篇: ES6-16 WeakMap与WeakS