목록분류 전체보기 (44)
soft IT life
바인딩할 DTO에 @어노테이션 적용하기 @field:[Validation] Kotlin 환경에서 Validation을 적용하려면 변수를 Nullable 타입으로 선언해야한다. @field:NotNull(message = "a는 필수 입력값입니다.") var a : String? = "abc" why? 위처럼 Nullable 타입으로 선언하지 않고 그냥 선언하면 Kotlin은 nullsafety이기 때문에 정상적인 핸들링을 기대하기 힘들다. why ? 아무 값을 입력하지 않아도 default value가 설정되는 primitive type 같은 경우에는, 만약 null로 client에서 넘어왔을때 default 값이 설정 되기 때문에 null이 아니라고 인식하여 정상적인 validation check가 불..
함수 파라미터 + 변환타입 => '함수 시그니처' fun multiplyByTwo(x: Int): Int { // [1] println("Inside multiplyByTwo") // [2] return x * 2 } fun main() { val r = multiplyByTwo(5) // [3] println(r) } 두번째 함수처럼 의미있는 결과를 제공하지 않는 함수의 반환 타입은 Unit이다. Unit은 생략이 가능 함수의 본문이 하나의 식인 경우 { } 없이 반환타입 뒤에 = 를 넣어서 짧게 작성 가능 fun aaa(a: String, b: Int) : Int = a+b -> 식이 본문인 함수 fun aaa(a: String, b: Int) : Int = { ~~ } -> 블록이 본문인 함수 if..
보호되어 있는 글입니다.
mac OS 환경에서 터미널을 잘 사용하던중에 갑자기 기본 명령어들 조차 실행되지 않는 에러를 겪게 되었다. ls 같은 기본 명령어도 먹지 않는 걸 보니 무언가 단단히 잘못된 듯 하였다. 찾아보니 환경변수 설정을 잘못해주면 다른 경로들도 꼬여서 이런 현상이 발생할 수도 있다고 한다. 아무래도 여러 작업중에 설정해준 path중 무언가 잘못 입력해준 것이 있었나보다. 그래서 path를 삭제하거나 수정하려고 했으나 매우 애를 먹었다...윈도우라면 GUI로도 환경변수를 확인할 수 있어 수정하거나 삭제하는 것이 매우 편했을텐데.. 우선 echo $path로 path 잡힌 경로들을 확인해보았더니 중복 입력되어 보이는 경로가 확인되었다. 그래서 해당 경로를 삭제하려고 필요한 명령어를 입력했더니 하.. ls 같은 명령..
String Template ${}를 사용하여 string 문자열 내에서 변수 사용 가능 fun test1(): String { val text : String = "hello" return("he+llo=${text}") } => he+llo=hello 조건식 if when (switch 대신 사용) fun checkNum(score: Int) { when(score) { 0 -> println("0입니다") 1 -> println("1입니다") 2,3 -> println("2혹은 3입니다.") else -> println("0~3 이외 숫자입니다.") //생략가능 } var b: Int = when(score) { 1->1 2->2 else -> 3 //생략 불가능 ! } println("b는 ${b..
기본 요소 : 함수 함수선언은 'fun'을 사용 함수를 최상위에 정의 가능(반드시 클래스 안에서 함수를 정의해야할 필요가 없음) 타입 명시는 변수명 뒤 식이 본문인 함수가 자주 쓰인다. cf) if는 문장이 아니라 식이다. 본래 자바에서 if문은 값을 만들어내는 식이 아니라 문장이었다. 반면 대입문은 자바에서 식이었으나 코틀린에서는 문이 되었다. //'블록이 본문인 함수'-block body fun max(a: Int, b: Int): Int { return if(a > b) a else b } //'식이 본문인 함수'-expression body fun max(a: Int, b: Int) Int = if(a>b) a else b //위는 동일 kotlin의 '타입추론' 식이 본문인 함수의 반환 타입생략..
temurin OpenJDK란? Oracle JDK가 유료화 됨으로써 무료 오픈소스로 여러곳에서 배포하는 것이 OpenJDK. 그중하나가 AdoptOpenJDK -> temurin https://mangkyu.tistory.com/72 [Spring] @RequestBody, @ModelAttribute, @RequestParam의 차이 이번에는 Spring에서 Client로 받은 요청을 객체로 바인딩하기 위해 사용하는 방법들에 대해서 알아보도록 하겠습니다. 1. RequestBody, ModelAttribute, RequestParam이란? [ @RequestParam ] @RequestParam은 1개의 HTTP mangkyu.tistory.com @PathVariable, @RequestParam ..
Java의 Collection에 대해서 설명하시오. Collection이란 데이터의 집합, 그룹을 의미한다. Java Collections Framework는 이러한 데이터와 이를 구현하는 클래스를 정의하는 인터페이스를 제공한다. Java Collections Framework의 상속구조 Collection의 주요 Interface 3가지 List: 순서가 있는 데이터의 집합으로 데이터의 중복을 허용한다. ArrayList: 각 데이터에 대한 인덱스를 가지고 있어 조회 기능에 성능이 뛰어나다. Map: Key, Value의 쌍으로 이루어진 데이터의 집합으로 순서가 유지되지 않으며, key의 중복을 허용하지 않지만, Value의 중복은 허용한다. Set: 순서가 유지되지 않으며, 데이터의 중복을 허용하지 ..