로그 레벨이란?로그 레벨은 애플리케이션에서 발생하는 로그의 중요도를 나타내는 지표이다. 개발 환경 별로 로그 레벨을 관리하는 것은 매우 중요하다. 개발 시에만 필요한 로그를 넣어뒀는데, 이것이 프로덕션에서도 보여진다면 불필요한 로그가 보여지는 것이기 때문에 불필요한 데이터가 디스크를 차지하거나 할 수 있다. 따라서 개발 환경 별로 서로 다른 로그 레벨의 설정이 필요하다. 이것을 어떻게 설정하는지 알기 위해 먼저 Spring 에는 어떤 로그 레벨이 있는지 알아보자. Spring의 로그 레벨Spring 에서는 다음과 같은 6단계의 로그 레벨을 사용한다. TRACE: 가장 상세한 정보를 제공하는 레벨DEBUG: 개발 시 디버깅 목적으로 사용되는 레벨INFO: 일반적인 정보를 나타내는 레벨WARN: 잠재적인 문..
Spring
스프링 의존성 주입 시리즈를 만들며스프링에서의 의존성 주입은 스프링의 기초가 되는 기술 중 하나로, 스프링 애플리케이션을 제대로 만들기 위해서는 의존성 주입에 대한 적절한 이해가 필요하다. 하지만 내가 스프링을 공부하면서 느낀 점은 의존성 주입과 관련된 내용을 체계적으로 정리한 자료를 찾기가 않다는 점이었다. 나는 이미 안드로이드 개발을 하면서 Koin, Dagger, Dagger-Hilt 등의 의존성 주입 프레임워크를 경험한 적이 있기 때문에 내가 알고 있던 다양한 키워드를 동원해 내가 아는 지식들을 찾았지만, 스프링에서 의존성 주입에 대해 처음 접한다면 의존성 주입에 대한 지식을 체계적으로 정리하기 힘들 것 같다 느꼈다. 이에 스프링 의존성 주입에 대한 내용들이 한 번에 쭉 정리할 수 있는 자료가 있..
@PreDestroy란 무엇이며 언제 사용될까?@PreDestroy 어노테이션을 함수에 적용하면 해당 Bean이 소멸되기 직전에 메서드가 자동으로 호출되며, 주로 다음과 같은 작업에 사용된다. 1. 리소스 해제: 열려있는 파일이나 네트워크 연결 닫기2. 캐시 정리: 메모리에 저장된 임시 데이터 삭제3. 백그라운드 작업 종료: 실행 중인 스레드나 작업 중지 @PreDestroy 사용해보기@PreDestroy를 사용하는 방법은 간단하다. 단순히 Bean이 파괴되기 전 실행할 함수 위에 @PreDestroy를 붙인 후 내부에 실행할 코드를 작성하면 된다. 예를 들어 이전 글에서 다룬 SearchInMemoryCache에서 Bean이 파괴되기 전체 캐시를 지워야 한다고 해보자. 그런 경우 다음과 같이 clean..
@PostContruct 란 무엇인가?@PostConstruct는 함수에 붙는 어노테이션으로, 해당 어노테이션이 붙은 함수는 Bean이 만들어질 때 한 번 실행된다. Bean이 초기화된 이후에 데이터를 로딩해야 한다거나, 로깅을 해야 하는 경우 @PostContruct 어노테이션을 사용할 수 있다. @PostContruct 사용해보기예를 들어 검색 결과를 메모리에 저장해놓는 SearchInMemoryCache 클래스가 있다고 해보자. 이 클래스의 경우 초기화가 된 후 Bean으로 등록되자마자 초기 결과가 있어야 한다고 해보자. 이런 경우 다음과 같이 @PostContruct 어노테이션을 setUp 함수 위에 붙여서 초기 데이터를 세팅할 수 있다.@Componentclass SearchInMemoryCac..
ObjectProvider가 필요한 이유앞서 우리는 다음과 같이 ShoppingCart를 프로토 타입 Bean으로 만들고, 이를 싱글톤으로 선언된 CartController에서 사용하고자 했다. @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)@Componentclass ShoppingCart { private val items: MutableList = mutableListOf() fun addItem(item: String) { items.add(item) } fun removeItem(item: String) { items.remove(item) }}@Component@Scope(ConfigurableBeanFa..