설치
우선적으로 코틀린 설치가 되어 있어야 합니다.
설치는 Homebrew를 이용합니다.
//코틀린 설치
brew install kotlin
//설치 확인
kotlinc -version
프로젝트 만들기
https://start.spring.io/ 에서 쉽게 만들 수 있어요. postgresql을 사용했지만 다른 mysql이나 mongoDB를 사용하셔도 무방합니다
yml 설정
spring:
jpa:
hibernate:
ddl-auto: create-drop
datasource:
password: '{password}'
username: {username}
url: jdbc:postgresql://localhost:5432/{database name}
driverClassName: org.postgresql.Driver
실행 테스트
HomeController를 만들고 가볍게 테스트 해볼게요
@RestController
class HomeController {
@GetMapping
fun home() : String = "Hello!"
}
이렇게 나오면 성공입니다.
폴더 구조
Entity 생성
@Entity
@Table(name="board")
class Board {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
var id: Long? = null
var title: String? = null
var description: String? = null
var writer: String?= null
}
Repository 생성
interface BoardRepository : JpaRepository<Board, Long> {
}
Controller 생성
원래는 서비스 단까지 생성해야 하지만 연습이기 때문에 생략합니다.
자바와 다른 점은 Return 값을 메소드 뒤에서 생성하는 것이고, @RequiredConstructor 없이 val 하나만으로 DI가 가능하다는 점이에요. 흔한 Lombok조차 대체가 가능하다는 점이 코틀린의 장점인거 같습니다. 아직은 자바에 익숙해 헷갈리네요..
@RestController
@RequestMapping("/board")
class BoardController(val boardRepository: BoardRepository) {
@GetMapping
fun getBoardList() = boardRepository.findAll()
@GetMapping("/{boardId}")
fun getBoard(@PathVariable("boardId") boardId: Long): Optional<Board>? {
return boardRepository.findById(boardId)
}
@PostMapping
fun postBoard(@RequestBody board: Board) : Board {
return boardRepository.save(board)
}
@PutMapping("/{boardId}")
fun updateBoard(@RequestBody board: Board,
@PathVariable("boardId") boardId: Long): Board {
var preBoard: Board = boardRepository.findById(boardId).get()
preBoard.title=board.title
preBoard.description=board.description
preBoard.writer=board.writer
return boardRepository.save(preBoard)
}
@DeleteMapping("/{boardId}")
fun deleteBoard(@PathVariable("boardId") boardId: Long) {
boardRepository.deleteById(boardId)
}
}
테스트
'스프링 부트 > 코틀린' 카테고리의 다른 글
[코틀린] 인터페이스 사용법 (0) | 2022.03.09 |
---|---|
[코틀린] 데이터 클래스 data class (0) | 2022.03.09 |
[코틀린] for문, while문, Iterator 사용법 (0) | 2022.03.09 |
[코틀린] 코틀린 기초 함수 변수 선언법 (0) | 2022.03.09 |
[코틀린] 코틀린이란 무엇일까? (0) | 2022.03.09 |
댓글