Spring Boot + Kotlin + Thymeleaf 프로젝트 만들기

이때까지 스프링 프레임워크를 사용한 웹 애플리케이션을 개발하는데 항상 xml설정 방식과 Java, JSP를 사용해 왔었습니다. 스프링 프레임워크에 대해서 계속 공부하던 중 Spring Boot, Kotlin, Thymeleaf등에 대해서 알게 되었고, 이것들을 조합하여 사용하는 것을 테스트해 보기로 마음 먹었습니다. 먼저 테스트를 위한 프로젝트를 생성해 보겠습니다. 사용된 개발툴은 다음과 같습니다. - JDK 1.8(Java 8) 이미 12버전까지 나와 있지만 못따라 가겠네요.T.T - Eclipse IDE 1918-12 Photon이후로 Eclipse의 명명방식이 년월을 붙이는 방식으로 바꼈네요. - Spring Tools 4 Eclipse 플러그인으로 사용하고 있습니다. Spring Boot 프로젝트..

프로그래밍/스프링프레임워크 | 2019.08.19 23:42

Kotlin - 클래스와 상속

코틀린에서 클래스를 만드는 방법에 대해 알아봅니다. 코틀린도 객체지향언어 이군요. 뭐, 요즘은 자바스크립트도 PHP도 모두 객체를 사용할 수 있도록 변해 왔으니까 특이할 것도 없겠죠. 클래스(class)는 객체가 어떤 데이터를 가지고, 어떻게 동작할지를 나타내는 코드 정보라고 할 수 있겠습니다. 실제 프로그램이 실행되어 정의된 클래스에 따라 컴퓨터의 메모리상에 객체가 만들어지면 이것을 인스턴스(instance)라고 합니다. 1. 클래스(Classes) 코틀린에서 클래스는 class 키워드를 사용해서 정의합니다. class Invoice { ... } class Box(t: T) { ... } 클래스의 선언은 클래스 이름, 클래스 헤더(클래스의 타입 파라미터의 정의, 기본 생성자 등), 중괄호로 둘러싸인 ..

프로그래밍/Kotlin | 2019.08.15 19:44

자바 문법 - 문자열(String 객체) 다루기

자바 문자열은 객체이고 문자열 리터를은 큰 따옴표로 묶어 표시합니다. String text = "추석에 배를 먹습니다."; 문자열 리터럴도 객체이므로 바로 메소드를 호출할 수 있습니다. int length = "추석에는 배".length(); 1. 문자열 연결하기 자바 문자열을 연결하는데는 + 연산자를 사용합니다. String h = "Hello ";String j = "Java!"; String text = h + j; System.out.println(text); 결과)Hello Java! 자바에서 문자열에 연산을 사용하는데 있어서 주의해야 할 점이 있는데, 자바 문자열은 불변(immutable)이라는 점입니다. 문자열에 연산을 가하면 현재 문자열을 변경되지 않고 변경된 새 문자열이 만들어져서 반환됩..

프로그래밍/자바 | 2019.08.11 01:07

자바 정규식(Regular Expression) 사용하기

앞의 글에서 문자열을 분할하고, 내용을 바꾸는 split(), replaceAll() 메소드에 대해서 알아보았는데, 정규식을 사용하는 예를 들었었습니다. 그래서 자바언어에서의 정규식에 대해서 알아보려고 합니다. 정규식은 문자열에서 특정 패턴을 찾거나 교체, 삭제 등 문자열을 원하는 형태로 편집하는 기능을 제공해 줍니다. 정규식은 자주 사용되지는 않지만, 어떤 경우에 일반적인 로직으로 처리하기 힘든것은 간편하게 처리할 수 있는 힘이 있습니다. 대부분의 언어들이 정규식을 가지고 있는데, 그 사용법들이 조금씩 다른것 같습니다. 자바 문자열 객체(java.lang.String)에서 정규식을 사용하는 자주 쓰는 메소드는 다음과 같습니다. - boolean matches(String regex) 인자로 주어진 정규..

프로그래밍/자바 | 2019.08.10 18:11

자바 문자열에서 특정 문자를 다른 문자로 바꾸기 - replace, replaceAll, replaceFirst

자바언어를 사용해서 문자열내의 특정 문자를 다른 문자로 바꾸는 방법을 알아 봅니다. 이때 주의해야할 사항이 있습니다. 자바 문자열은 불변(immutable)이라는 것입니다. 자바 문자열을 불변이라서 어떤 연산에 의해 원본 문자열이 바뀌지 않습니다. 원본은 그대로 유지되고, 바뀐 문자열이 새로 생성이 되어서 반환됩니다. 그래서 항상 바뀐 문자열을 반환값으로 받아야 합니다. String str = "ABCDE";String text = str.replace('C', 'F'); 자바 String객체에 문자열에는 문자열을 바꿀 수 있는 다음과 같은 메소드가 제공 됩니다. - String replace(char oldChar, char newChar) 문자열내에 있는 모든 oldChar를 newChar로 바꾼 문..

프로그래밍/자바 | 2019.08.08 02:00

자바 문자열을 구분자로 분할하기 - split

자바 언어에서 구분자로 연결된 문자열을 분할하는 방법을 알아봅니다. 예전에는 StringTokenizer 객체를 사용했었는데, JDK 1.4부터 split 메소드를 사용할 수 있습니다. 이게 훨씬 간편합니다. split는 오버로딩 된 두 개의 메소드가 제공되며 정규식을 사용해서 문자열을 분할 합니다. 각각은 다음과 같습니다. - String[] split(String regex) : 인자로 주어진 정규식과 매치되는 문자열을 구분자로 분할합니다.- String[] split(String regex, int limit) : 인자로 주어진 정규식과 매치되는 문자열을 구분자로 분할 합니다. 두 번째 인자로 정규식을 적용하는 횟수를 제한할 수 있습니다. 분할할 구분자를 찾는데 정규식을 사용하므로 복잡한 형태의 구..

프로그래밍/자바 | 2019.08.06 19:21

iPhone 8에 iOS 12.4 업데이트 및 Apple Watch 3에 watchOS 5.3 업데이트

7월 22일에 업데이트가 나왔다고 하네요. 이제야 업데이트 했습니다. iPhone 8의 iOS 12.4는 업데이트 파일 용량이 412.1MB이고, 업데이트에 걸린 시간은 15분 정도 였습니다. Apple Watch 3의 watchOS 5.3은 파일 옹량이 114MB이고, 업데이트에 걸린 시간은 10분 정도 였습니다. 1. iOS 12.4의 업데이트 내용입니다. - iPhone 마이그레이션 : 이전 iPhone에서 새 iPhone으로 직접 마이그레이션하는 기능을 선보인다고 합니다. 그외에도 Apple Card 지원, Apple 뉴스 수정, 워키토키 기능 활성화등에 대한 내용이 있는데 한국에서는 지원되지 않거나, 사용하지 않거나, 하위 버전이라 지원되지 않는 것들이라 나에게는 확인 불가능 합니다. 업데이트 ..

프로그래밍/운영체제, 서버 | 2019.07.30 00:10

Kotlin - 반환 및 제어 흐름 건너뛰기 - return, continue, break

이번에 볼 것은 함수 또는 람다 표현식에서 반환문(return)을 사용하는 방법과 루프의 반복을 건너뛰거나(continue) 바로 빠져 나오는(break) 방법입니다. - return : 기본적인 사용법은 return문장을 둘러싼 가장 가까운 함수 또는 익명 함수에서 반환합니다. 반환값이 있을수도 없을수도 있습니다. 기본적인 사용법에서라고 말한것은 코틀린에서는 라벨 반환을 할 수 있습니다.- break : 가장 가까운 둘러싼 루프를 종료합니다.- continue : 가장 가까운 둘러싼 루프의 다음 반복을 진행합니다. ※ 참고 : 둘러싼 가장 가까운 루프, 함수, 익명함수 라고 하는 것은 함수 또는 루프가 중첩될 경우 그중에 가장 가까운 것을 의미합니다. 이 return, continue, break는 다..

프로그래밍/Kotlin | 2019.07.29 01:16

Kotlin - 흐름제어(Control Flow): if, when, for, while

코틀린에서 프로그램의 흐름을 제어하는 방법을 알아봅니다. 흐름제어에는 if, when, for, while이 사용되어 집니다. 다른 언어와 유사합니다. 1. if 표현식(If Expression) 코틀린에서 if는 표현식 입니다. 즉, if가 반환값을 가집니다. 그러므로 코틀린에는 삼항 연산자(조건 ? 참일때 : 거짓일때)가 없습니다. 왜냐하면 보통 if가 삼항연산자의 역할을 잘 수행하기 때문입니다. // 전통적인 사용법var max = aif (a < b) max = b // else를 가지는 사용법var max: Intif (a > b) { max = a} else { max = b} // 표현식으로의 사용법val max = if (a > b) a else b if 표현식의 브랜치는 여러문장을 가지는..

프로그래밍/Kotlin | 2019.07.13 17:00

Kotlin - 패키지와 임포트(packages and imports)

패키지는 클래스들을 분류해서 모아둔것을 말한다고 생각하면 되겠습니다. 또한 패키지는 동일한 클래스 이름을 사용하는 클래스가 있을때 이름 충돌을 피하는데도 사용될 수 있습니다. 패키지는 인터넷 도메인 처럼 마침표(.)로 구분되는 문자열로 정의됩니다. 코틀린과 자바를 같이 사용하는 프로젝트라면 Kotlin 소스 파일은 Java 소스 파일과 동일한 소스 루트에 있어야하며 동일한 디렉토리 구조를 따라야합니다(자바에서는 패키지명의 마침표 부분으로 구분되는 디렉토리 구조에 파일이 저장됩니다). 순수 Kotlin 프로젝트에서 권장되는 디렉토리 구조는 공통 루트 패키지가 생략된 패키지 구조를 따르는 것입니다 (예 : 프로젝트의 모든 코드가 "org.example.kotlin" 패키지 및 하위 패키지에 있는 경우 "or..

프로그래밍/Kotlin | 2019.07.05 15:55

Kotlin - 기본 타입(Basic Types)

Kotlin은 모든것이 객체입니다. 그러므로 모든 변수(variable)에 대해 멤버 함수와 속성을 호출할 수 있습니다. 몇몇 타입은 특별한 내부 표현을 가집니다. 예를 들어 숫자(numbers), 문자(characters), 불리언(booleans) 타입은 실행시간에는 원시값 처럼 표현되어집니다. 그러나 사용자에게는 보통의 클래스로 보입니다. 이 글에서는 Kotlin에서 사용되는 기본 타입인 숫자, 문자, 불리언, 배열, 문자열에 대해서 알아봅니다. 1. 숫자(Numbers) 코틀린은 숫자를 자바와 유사하게 다룹니다. 하지만 똑같지는 않습니다. 예를 들어 코틀린의 숫자 타입은 암묵적인 넓은 범위로의 변환이 없습니다. 그리고 어떤 경우에는 리터럴이 약간 다릅니다. ※ 참고 : 자바에서 서로 다른 타입의 ..

프로그래밍/Kotlin | 2019.07.01 23:30