JAVA/Spring(114)
-
컴포넌트 스캔의 필터(Filter) 생성
필터 필터의 필요성 컴포넌트 스캔시 옵션으로 includeFilter 또는 excludeFilter를 통해서 특정한 범위의 대상은 스프링 빈으로 등록하거나 제외할 수 있습니다. 이때 includeFilter 또는 excludeFilter 옵션값으로 필터를 설정합니다. 필터(Filter)의 종류 includeFilter : 컴포넌트 스캔에 스프링 빈으로 등록할 탐색 범위를 추가합니다. excludeFilter : 컴포넌트 스캔에 스프링 빈으로 등록 제외할 탐색 범위를 추가합니다. 필터 등록 방법 1. includeFilter에 설정할 커스텀 애노테이션 정의 @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented public @in..
2023.05.03 -
컴포넌트 스캔(ComponentScan)
목차 컴포넌트 스캔의 필요성 컨포넌트 스캔 예시 excludeFilters basePackages basePackageClasses 컴포넌트 스캔(ComponentScan) 컴포넌트 스캔은 클래스를 탐색하며 @Component 애노테이션이 붙은 클래스를 스프링 빈으로 등록하는 기능입니다. 컴포넌트 스캔의 필요성 컴포넌트 스캔이 필요한 이유는 기존 @Bean을 통해서 수동적으로 스프링 빈을 등록하였지만, 등록할 빈 개수가 증가할수록 관리가 어려워집니다. 따라서 이러한 빈 등록을 자동적으로 해야할 필요성이 있습니다. 컴포넌트 스캔을 사용하지 않고 기존 스프링 빈을 등록하는 대표적인 방법은 @Bean 애노테이션을 사용하는 것입니다. 다음 코드와 같이 @Configuration 애노테이션이 적용된 클래스의 메소..
2023.05.03 -
SRP(Single Responsility Principle, 단일 책임 원칙)
SRP(Single Responsility Principle, 단일 책임 원칙) 단일 책임 원칙은 어떤 원칙인가? 어떤 한 객체는 하나의 책임만을 가져야 한다는 원칙입니다. 여기서 책임이란 어떤 객체가 그 객체에 맞는 역할을 수행하기 위한 기능들을 의미합니다. 역할은 객체가 어떤 책임들을 수행할 것인지 정의한 것입니다. 제 주관적인 생각으로는 단일 책임이라는 표현보다는 단일 역할 원칙이라는 표현이 더 적절하다고 생각합니다. 즉, 한 객체는 하나의 역할만을 갖고 책임들을 수행해야 한다는 원칙이라고 생각합니다. 역할 : 객체가 역할에 맞는 책임들을 수행할 것인지 정의한 것 책임 : 역할에 맞는 기능들 예를 들면 자동차라는 객체의 주요한 역할은 운전하는 것입니다. 그렇다면 자동차 역할에 따른 책임들이 존재할 ..
2023.05.03 -
애플리케이션 logging을 위한 적절한 방법
1. 작업을 위해서 적절한 도구들을 사용하자 SLF4J를 활용하여 다음과 같이 구현할 수 있습니다. log.debug("Found {} records matching filter: '{}'", records, filter); 2. 잊지말자, 로깅 레벨(logging levels)들은 너를 위한 것이다. 1) ERROR : 요청을 처리하는 중 오류가 발생한 경우 표시됩니다. 2) WRAN : 처리 가능한 문제, 향후 시스템 에러의 원이 될 수 있는 경고성 메시지를 표시합니다. 3) INFO : 상태 변경과 같은 정보성 로그를 표시합니다. 4) DEBUG : 프로그램을 디버깅하기 위한 정보를 표시합니다. 5) TRACE : 추적 레벨은 DEBUG 레벨보다 훨씬 상세한 정보를 표시합니다. 3. 무엇을 로깅할 ..
2023.05.01 -
Logback 라이브러리 설정
설정 파일 loback의 기본 설정 파일은 logback.xml 입니다. logback 라이브러리는 classpath 아래에 위치하는 logback.xml을 기본으로 탐색합니다. xml 파일에 로그 설정 logback.xml 파일에 다음과 같이 설정할 수 있습니다. %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n 기본 로그 레벨은 info 레벨로 설정됩니다. kr.codesquad.cafe 패키지의 로그 레벨은 debug 레벨로 설정됩니다. 로그 출력 방식은 콘솔(ConsoleAppender)로 설정됩니다. 로그 레벨(log level) 로그 레벨은 다음과 같습니다. TRACE < DEBUG < INFO < WARN < ERROR 1) ERROR : ..
2023.04.24 -
SLF4J 개념 및 동작과정
1. System.out.println 문제점 로그 라이브러리는 로그 레벨을 설정할 수 있기 때문에 특정 레벨 이상의 로그만 출력할 수 있지만 출력문은 레벨 상관없이 출력됩니다. 로그 라이브러리는 파일이나 외부 서버에 저장할 수 있는 반면 출력문은 이러한 기록을 파일로 기록하기 어렵습니다. 로그 라이브러리를 사용하는 것보다 출력문을 사용하면 성능 저하가 발생할 수 있습니다. 개발 중에 추가한 출력문을 주석 처리하거나 제거해야 할 수 있습니다. 2. Logging 라이브러리 로깅 라이브러리는 애플리케이션에서 발생하는 이벤트를 기록하고 추적할 수 있는 도구입니다. 로깅 라이브러리를 활용하여 디버깅 메시지를 레벨로 구분할 수 있으며, 레벨에 따라 로깅 메시지의 출력 유무를 결정할 수 있습니다. 대표적 로깅 라..
2023.04.23