kotlin 16

Singleton Pattern 인스턴스가 오직 1개만 생성되야 하는 경우에 사용되는 패턴입니다. 시스템 런타임, 환경 세팅에 대한 정보 등 인스턴스가 여러개일 때 문제가 생길 수 있는 상황에서 싱글턴 패턴을 사용합니다. 인스턴스가 1개만 생성되는 특징을 가진 싱글턴 패턴을 이용하면 하나의 인스턴스를 메모리에 등록해서 여러 스레드가 동시에 해당 인스턴스를 공유하여 사용하게끔 할 수 있으므로 요청이 많은 곳에서 사용하면 효율을 높일 수 있습니다. 싱글턴을 만들때 동시성(Concurrency) 문제를 고려해서 싱글턴을 설계해야합니다. 싱글턴을 사용하는 방법과 문제점을 알아보고 해결방법을 알아보겠습니다. 1. Eager Initialization public class SingletonEagerInit { private static Sing.. Computer Science/Design Pattern 2022. 1. 15.
[Java] Exception Error와 Exception Java는 오류가 발생하거나 발생할 여지가 있는 여러 상황에 대한 예외를 만들어 두었습니다. 오류(Error) 시스템이 종료되어야 할 수준의 상황과 같이 수습할 수 없는 심각한 문제를 의미합니다. OutOfMemory나 StackOverFlow처럼 일단 발생하면 복구할 수 없는 오류입니다. 예측하여 방지할 수 없는 영역입니다. 예외(Exception) 개발자가 구현한 로직에서 발생한 실수나 사용자에 의해 발생하는 영역으로 오류와 달리 개발자기 미리 예측하여 방지할 수 있습니다. 오류와 예외 모두 Throwable을 상속 받습니다.Throwable 클래스 내부의 설명을 인용하여 설명하자면 Java 언어의 모든 오류 및 예외의 슈퍼클래스입니다. 예외 상황이 발생했음을 나타내기 .. Language/Java 2021. 11. 26.
[Kotlin In Action] 코틀린이란? Android와 Web Application Server 개발에서 Java를 대체할 목적으로 IDE 전문 개발사인 JetBrains에서 만든 언어입니다. Java를 대체하기 위한 목적으로 개발된 언어로 언어적으로는 최신의 패러다임을 적용하여 Java의 약점을 보완하여 Java에서 사용하는 JVM에서는 호환될 수 있게 만들어졌습니다. 특징 자바와 마찬가지로 정적 타입 지정 언어입니다. 컴파일 시점에 알 수 있고 프로그램 안에서 객체의 필드나 메소드를 사용할 때마다 컴파일러가 타입을 검증해준다는 뜻입니다. 코틀린에서는 모든 변수의 타입을 프로그래머가 직접 명시할 필요가 없습니다. 대부분의 경우 코틀린 컴파일러가 문맥으로부터 변수 타입을 자동으로 유추할 수 있기 때문에 프로그래머는 타입 선언을 생략해도 됩니다.. Language/Kotlin In Action 2021. 9. 29.
[Spring] JdbcTemplate 스프링은 JDBC를 이용하는 DAO에서 사용할 수 있도록 준비된 다양한 템플릿과 콜백을 제공합니다. 거의 모든 종류의 JDBC코드에 사용 가능한 템플릿과 콜백을 제공할 뿐만 아니라, 자주 사용되는 패턴을 가진 콜백은 다시 템플릿에 결합시켜서 간단한 메소드(update(), query(), queryForObject()) 호출만으로 사용이 가능하도록 만들어져 있기 때문에 템플릿/콜백 방식의 기술을 사용하고 있는지도 모르고도 쓸 수 있을 정도로 편리합니다. 스프링이 제공하는 JDBC 코드용 기본 템플릿이 바로 JdbcTemplate입니다. update() update는 다양한 형태를 제공하지만 기본적으로 SQL 구문과 '?' 치환자를 대체할 수 있는 가변인자들을 파라미터로 받아 사용하는 메서드입니다. //예.. Domain/Spring 2021. 8. 9.
[Spring] Bean ( Spring Bean ) Bean Spring에서는 Container를 이용해 객체들을 관리합니다. 이때 Container가 관리하는 자바 객체를 Bean이라고 부릅니다. 흔히 알고 있는 new를 통해 생성된 객체는 Bean이라고 할 수 없습니다. Bean은 getBean()을 통해 얻어질 수 있는 것을 Bean이라고 합니다. Spring에서의 빈은 ApplicationContext가 알고있는 객체, 즉 ApplicationContext가 만들어서 그 안에 담고있는 객체를 의미합니다. Spring에서 Bean을 등록하는 방법은 ComponentScan 방법과, Configuration에서 직접 등록하는 방법이 존재합니다. 스프링은 기본적으로 모든 Bean을 Singleton으로 생성하여 관리합니다. Bean은 다양한 Scope를.. Domain/Spring 2021. 7. 23.
[Kotlin In Action] 인터페이스 코틀린의 인터페이스는 자바8 인터페이스와 비슷합니다. 코틀린 인터페이스 안에는 추상 메소드뿐 아니라 구현이 있는 메소드도 정의할 수 있습니다. 자바 8의 디폴트 메소드와 비슷합니다. 다만 인터페이스에는 아무런 상태도 들어갈 수 없습니다. 자바에서는 extends와 implements 키워드를 사용하지만, 코틀린에서는 클래스 이름 뒤에 콜론(:)을 붙이고 인터페이스와 클래스 이름을 적는 것으로 클래스 확장과 인터페이스 구현을 모두 처리합니다. 자바와 마찬가지로 클래스는 인터페이스를 원하는 만큼 개수 제한 없이 마음대로 구현할 수 있지만,클래스는 오직 하나만 확장할 수 있습니다. class 클래스이름 : 클래스A, 인터페이스A, 인터페이스B { ... } 자바의 @Override 애노테이션과 비슷한 over.. Language/Kotlin In Action 2021. 4. 22.
[Kotlin In Action] 가변 인자 가변 길이 인자는 메소드를 호출할 때 원하는 개수만큼 값을 인자로 넘기면 자바 컴파일러가 배열에 그 값들을 넣어주는 기능입니다. 코틀린의 가변 길이 인자도 자바와 비슷합니다. 다만 문법이 조금 다릅다. 타입 뒤에 . . .를 붙이는 대신 코틀린에서는 파라미터 앞에 vararg 변경자를 붙입니다. //mutableListof() //val list = mutableListOf() public inline fun mutableListOf(): MutableList = ArrayList() //mutableListOf(1,2,3,4,5,6,7,8,9,10) //val list = mutableListOf(1,2,3,4,5,6,7,8,9,10) public fun mutableListOf(vararg eleme.. Language/Kotlin In Action 2021. 4. 22.
[Kotlin In Action] 확장함수 확장 함수는 어떤 클래스의 멤버 메소드인 것처 럼 호출할 수 있지만 그 클래스의 밖에 선언된 함수입니다. 확장 함수를 만들려면 추가하려는 함수 이름 앞에 그 함수가 확장할 클래스의 이름을 덧붙이기만 하면 됩니다. 이때 클래스의 이름을 수신 객체 타입이라고 부르며, 확장함수가 호출되는 대상이 되는 값을 수신 객체라고 합니다. 수신 객체 타입은 확장이 정의될 클래스의 타입이며. 수신 객체는 그 클래스에 속한 인스턴스 객체입니다. //CommonResponse : 수신 객체 타입 //this : 수신 객체 fun CommonResponse.isSuccess(): Boolean { return this.data == "success" } 심지어 자바나 코틀린 등의 언어 중 어떤 것으로 작성됐는가는 중요하지 않습.. Language/Kotlin In Action 2021. 4. 21.
[Kotlin In Action] 문자열 템플릿 문자열 템플릿은 자바의 문자열 접합 연산("Hello, ”+name+"!”)과 동일한 기능 을 하지만 좀 더 간결하며,자바 문자열 접합 연산을 사용한 식과 마찬가지로 효율적입니다. 컴파일러는 각 식을 정적으로 컴파일 시점에 검사하기 때문에 존재하지 않는 변수를 문자열 템플릿 안에서 사용하면 컴파일 오류가 발생합니다. 문자열 템플릿 안에 사용할 수 있는 대상은 간단한 변수 이름만으로 한정되지 않습니다. 복잡한 식도 { }로 둘러싸서 문자열 템플릿 안에 넣을 수 있습니다. 문자열 템플릿 안에 $로 변수를 지정할 때 변수명 바로 뒤에 한글을 붙여서 사용하면 코틀린 컴파일러는 영문자와 한글을 한꺼번에 식별자로 인식해서 unresolved reference 오류를 발생시킵니다. 이 문제를 해결하는 방법은 변수 이.. Language/Kotlin In Action 2021. 4. 13.
[Kotlin In Action] 변수 코틀린에서 변수를 선언할 때, 자바와 달리 자료형 대신 키워드로 변수 선언을 시작합니다. 또 상황에 따라 뒤에 오는 타입을 명시하거나 생략하게 허용합니다. 변수를 선언하는 키워드는 두가지가 있습니다. var variable라는 의미를 가집니다. mutable(가변) 참조를 저장하는 변수로 활용됩니다. 값이 바뀔 수 있습니다. 자바의 일반변수에 해당합니다. 한번 초기화하면 타입이 고정됩니다. Int 타입으로 처음 초기화 되면 Int형 변수가 됩니다. val value라는 의미를 가집니다. immutable(불변) 참조를 저장하는 변수로 활용됩니다. val로 선언된 변수는 일단 초기화하고 나면 재대입이 불가능합니다. 자바의 final에 해당됩니다. 초기화 조건(분기)에 따라 다른 여러 값으로 초기화 할 수 .. Language/Kotlin In Action 2021. 4. 13.