본문 바로가기

Spring/Springboot

[Springboot] 스프링부트에서 로그(log) 설정/관리하기 - Logback 1. 로깅을 하는 이유 앱 개발 시 운영 중 발생하는 문제점을 모니터링 하거나 추적하는데 용이하고, 데이터를 분석해 통계를 낼 수 있음 2. 로깅을 위한 도구 SLF4J는 로깅에 대한 퍼사드(인터페이스) 역할을 하며 실제 로깅을 위한 구현체로는 Log4j, Logback이 있음 1) SLF4J(Simple Logging Facade for Java) 인터페이스 로깅에 관한 간단한 퍼사드(인터페이스)를 제공 실제로 로깅을 수행하는 것이 아닌 추상화 제공 코드에서 SLF4J 인터페이스를 사용하고 실행환경에서 로깅 라이브러리를 선택할 수 있도록 함 2) Log4j 구현체 가장 오래된 프레임워크이며 Apache 의 Java 기반 Logging Framework Log4j 1 버전은 자체 인터페이스 제공, Log.. 더보기
[Spring] WebClient와 RestTemplate WebClient: 리액티브 프로그래밍: WebClient은 리액티브 프로그래밍 원칙에 따라 설계되었으며, Spring WebFlux 모듈의 일부입니다. 비동기 및 리액티브 스트림을 지원합니다. 비동기 작업: WebClient은 비동기 작업을 수행할 수 있어, 대규모 동시 요청을 효율적으로 처리할 수 있습니다. 플루언트 API: WebClient은 요청을 생성하는 데 사용되는 플루언트 API를 제공하여 간결하고 표현력있게 코드를 작성할 수 있습니다. 엑스체인지 메서드: RestTemplate과 마찬가지로 WebClient도 exchange 메서드를 제공하여 다양한 HTTP 메서드를 지원합니다. RestTemplate: 전통적인 방식: RestTemplate은 전통적인 방식으로 동기적으로 동작하며, Spr.. 더보기
스프링 프로젝트 생성하기 1. Spring Initializr를 이용하여 스프링부트 프로젝트 생성하기 https://start.spring.io Group: (기업에서는 기업명을 넣는다고함) Artifact:빌드 후 이름(결과물 이름) Name: 프로젝트명 Description: 설명 Package name: 패키지명(Group Artifacta명으로 자동입력 됨) Dependencies: 필요한 의존성을 추가 GENERATE를 누르면 저장 2. 인텔리제이에서 열기 1) Open 2) 저장한 프로젝트 클릭해서 열기 더보기
📝 스프링(Spring) 예외(Exception)처리 2 Spring 기본적으로 BasicErrorController 에서 에러 처리 /error: 에러 요청 다시 전달(Redirect)하도록 WAS 설정되어 있음 오류(Error)페이지 HTTP Status 에러 HTTP 200, Error Message -> 별도 설정 없으면 BasicErrorController가 에러를 처리함(기본적으로 WebMVCAutoConfiguration을 통해 WAS 자동 설정) 스프링 일반적 흐름 WAS(톰캣) -> Filter -> 디스패치 서블릿 -> 인터셉터 -> 컨트롤러 컨트롤러에서 에러 발생 시 흐름(예외처리 따로 없는 경우) WAS(톰캣) -> Filter -> 디스패치 서블릿 -> 인터셉터 -> 컨트롤러 -> WAS는 application에서 예외처리 안되서 온거로.. 더보기
📝 절차지향 / 객체지향 / 관점지향 프로그래밍 정리 절차적 프로그래밍 (PP; Procedure Programming) procedure(main 함수, 메소드 등)를 이용하여 작성하는 프로그래밍 스타일이다. 순차적인 처리를 중요시 여기며, 프로그램 전체가 유기적으로 연결되도록 한다. 컴퓨터의 처리 구조와 비슷해 실행속도가 빠르지만 확장성이 떨어지며 유지보수가 어렵다. 객체지향 프로그래밍(OOP; Object Oriented Programming) 프로그래밍에 필요한 attribute와 method를 포함한 class를 정의하고, 정의된 class를 통해서 object를 생성하여 object들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방식 유지보수가 보다 수월하지만 설계에 필요한 시간이 크다. 관점지향 프로그래밍(AOP; Aspect Or.. 더보기
📝 스프링에서 DI (의존성 주입) 를 사용하는 이유 DI(의존성 주입)을 하지 않을 때 문제점: 강한 결합 Controller는 Service의 객체를 생성하여 사용하고, Service는 Repository객체를 생성하여 사용함 → Controller는 Service를 Service는 Repository를 의존하는 상황 // Controller1은 Service1 객체를 생성하여 사용 public class Controller1 { private final Service1 service1; public Controller1() { this.service1 = new Service1(); } } // Service1은 Repository1 객체를 생성하여 사용 public class Service1 { private final Repository1 repo.. 더보기
📝 스프링 프레임워크 특징 생명주기 관리: 스프링 프레임워크는 Java 객체의 생성, 소멸과 같은 라이프 사이클을 직접 관리하며 스프링으로부터 필요한 객체를 가져와 사용할 수 있다. 제어 역전(Inversion of Control, IoC): 전통적인 프로그래밍에서는 개발자가 작성한 프로그램이 외부 라이브러리의 코드를 호출해서 이용했다. 제어 역전은 이와 반대로 외부 라이브러리 코드가 개발자의 코드를 호출하게 된다. 즉, 제어권이 프레임워크에게 있어 필요에 따라 스프링 프레임워크가 사용자의 코드를 호출한다. POJO(Plain Old Java Object) 방식: POJO는 Java EE의 EJB 를 사용하면서 해당 플랫폼에 종속되어 있는 무거운 객체들을 만드는 것에 반발하며 나타난 용어다. 별도의 프레임워크 없이 Java EE를.. 더보기
📝 스프링(Spring) 예외(Exception)처리 1 1. 에러(Error)와 예외(Exception) 1) 에러(Error) - java.lang.error 클래스 처리할 수 없는 심각한 오류를 나타내는 클래스로 throw가 되었지만 catch되지 않은 것으로 오류는 개발자가 처리 할 수 없는 경우로 메모리 에러, 스택 오버 플로우 같은 시스템 비정상의 상황으로 주로 JVM에서 발생 시스템 레벨에서 특별한 작업을 하는 것이 아닌 이상 에러 처리를 하지 않아도 됨 2) 예외(Exception) - java.lang.exception 클래스 프로그램이 복구할 수 있고 응용 프로그램에서 개발자가 처리해야 하는 문제 Unchecked Exception(RunTimeException:) Checked Exception 예외처리 - 컴파일 타임에 확인할 수 없는 예.. 더보기