지연 초기화가 필요한 이유@Component 어노테이션이나 @Bean 어노테이션을 통해 IOC Container에 Bean을 등록하면 스프링 애플리케이션 시작 시 등록된다. 예를 들어 다음과 같이 초기화 시 InitTestUseCase Initialized 를 출력하는 InitTestUseCase를 만들어보자.@Componentclass InitTestUseCase { init { println("InitTestUseCase initialized") }} 그런 다음 Configuration 파일을 다음과 같이 만든 후@ComponentScan@Configurationclass InitConfiguration 다음과 같이 컨테이너를 초기화 하고, "After container ini..
지연 초기화
lateinit 이란 무엇이며 언제 사용해야 하는가? 다음과 같은 NonNullableValueStateHolder 클래스를 살펴보자. *실제 코틀린에서는 아래와 같이 getter와 setter을 직접 설정하는 경우가 거의 없다. class NonNullableValueStateHolder() { private var nonNullableValue: String = "testValue" fun set(value: String) { nonNullableValue = value } fun get(): String { return nonNullableValue } } 이 클래스에는 nonNullableValue 라 불리는 String 타입의 non-nullable한 값이 있고, 이 변수에는 "testValue..