fx.Invoke 모든 의존성 컨테이너가 초기화 된 후, 실행하고 싶은 함수나 메서드를 등록할 수 있도록 하여주는 fx.Option 입니다. 실행 과정 살펴보기 app.root 란 !? app.root 는 최상위 모듈로서 아래에서 살펴볼 수 있듯이 fx.New 를 통해 내부적으로 생성되는 fx.App 을 가지고 있는 모듈로, 최상위 모듈입니다. 최상위 모듈도 생성된 fx.App 에 등록된 모든 모듈을 관리하는 app.modules 에 추가된 것을 확인할 수 있습니다. 모든 의존성 컨테이너가 초기화된 후 최종적으로 fx.App 에 등록된 모든 모듈의 fx.Invoke 를 실행합니다. → app.root.executeInvokes() 메서드 호출이 그 역할을 수행합니다. 잠깐 살펴보는 fx.module 구조..
Fx Fx는 Uber에서 만든 Go 생태계에서 사용되는 Dependency Injection System(Framework) 입니다. Fx를 왜 쓰는가 ? Fx 프레임워크를 사용하지 않더라도 DI를 수행할 수 있습니다. 하지만 시스템 전반에 존재하는 의존성이 많아지게 될 경우, 각 의존성에 대한 라이프 사이클등의 관리 포인트가 많아지게 됩니다. 또한 동일한 의존성을 재사용하고자 하는 경우, 이미 존재하는 의존성을 사용하는 것이 아닌 무분별한 인스턴스 재생성과 같은 직접 DI를 수행하고자 할 때 발생하는 여러 불편한 점을 Fx 프레임워크는 쉽게 해결하여 줍니다. Fx의 특징 Fx는 의존성을 싱글톤의 형태로 관리하며, Lazy Loading 을 기본으로 하여 런타임 시점에 DI를 진행합니다. 다른 DI 프레..
데이터 클래스(data class) 자바를 사용해본 적이 있다면, 롬복(Lombok)이라는 플러그인을 사용해본 적이 있을 것입니다. 데이터 클래스는 롬복의 @Data 애너테이션과 매우 유사한 기능을 언어단에서 지원하여줍니다. 사용 방법 data class Student(val name: String, val age: Int) 위와 같이 name, age 필드를 가지는 Student 클래스를 데이터 클래스로 선언할 경우 어떠한 기능을 코틀린에서 제공하여주는 걸까요? 대표적으로 코틀린에서는 데이터 클래스로 선언할 경우 다음과 같은 5가지의 기능을 기본적으로 구현하여 제공하여 줍니다. 1. toString 메서드 toString 메서드는 해당 클래스에 대한 정보를 바탕으로 문자열을 구성하여 반환해주는 메서드입..
인터페이스 코틀린의 인터페이스는 자바 8 인터페이스와 거의 유사합니다. 자바처럼 인터페이스 안에는 추상 메서드뿐만 아니라 기본 구현이 있는 메서드(자바 8에서의 default 메서드를 의미합니다.) 또한 정의할 수 있습니다. 하지만 인터페이스에는 상태(필드)는 들어갈 수 없지만, 프로퍼티는 선언할 수 있습니다. 인터페이스 선언 interface Closeable { val short: String // 프로퍼티 fun close() // 추상 메서드 fun closeBy(name: String) { // default 메서드 println("name : $name") close() } } 자바와 크게 다르지 않게 인터페이스를 선언하고, 인터페이스 안에 추상 메서드를 선언할 수 있습니다. 인터페이스 구현 ..
예외처리 코틀린에서 예외(Exception) 처리는 자바와 거의 비슷합니다. 함수는 예외를 던질 수 있으며, 해당 예외는 함수를 호출하는 쪽에서 그 예외를 잡아 처리할 수 있습니다. 발생한 예외를 함수를 호출하는 쪽에서 처리(catch) 하지 않으면 함수 호출 스택에 쌓이면서 예외를 처리하는 부분이 나올 때까지 예외를 다시 던지게(rethrow)된다. 즉 전파(propagation)가 됩니다. 예외 던지기 예외는 자바와 동일하게 throw 키워드를 사용하여 던질 수 있습니다. 다만 코틀린은 명시적으로 new 키워드를 쓰지 않아도 객체를 생성할 수 있기 때문에 다음과 같이 예외를 던질 수 있습니다. fun main() { val input = 102 val score = if (input in 0..100..
- Total
- Today
- Yesterday
- 스택
- 문자열
- 회고
- BFS
- Java
- 프로그래머스
- dp
- 쓰레드
- kotlin
- 우선순위큐
- JPA
- 탐욕법
- TDD
- 코딩인터뷰
- dfs
- sql
- 구현
- 연결리스트
- 코드 스니펫
- 카카오
- set
- 해쉬
- 오늘의집
- 정렬
- dsu
- 알고리즘
- k8s
- Uber
- 비트연산
- 스트림
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |