스터디/Spring
-
Spring에서 Execption을 핸들링하는 방법스터디/Spring 2024. 1. 15. 21:07
서비스를 만들면서 예외 처리는 정말 중요합니다. 이번 포스팅에서는 Spring Boot에서 예외를 어떻게 핸들링할 수 있지에 대해서 알아보겠습니다.예외를 처리하는 방법은 @ExceptionHandler 사용, HandlerExceptionResolver를 사용, @ControllerAdvice 사용 이렇게 3가지가 있습니다.Controller - level : @ExceptionHandler Spring Boot에서 예외를 처리하는 방법 중 하나는 Controller의 메서드 위에 바로 @ExceptionHandler를 사용하는 것입니다.public class FooController{ //... @ExceptionHandler({ CustomException1.class, Custo..
-
private 메서드는 트랜잭션 처리를 할 수 없는 이유스터디/Spring 2023. 7. 26. 16:58
의문 private 메서드는 @Transactional을 적용할 수 없다. 뭔가 예상이 가지만 그래도 한번 알아보자!! 먼저 @Transactional 부터 살펴보자! @Transactional 평소에 저희가 자주 사용하는 @Transactional에는 AOP가 적용되어있습니다. 이를 스프링 트랜잭션 AOP라고 합니다. 스프링 트랜잭션 AOP는 @Transactional이 붙여진 메서드가 실행되기 전에 begin을 호출하고 메서드가 종료한 뒤에 commit을 호출합니다! 어떻게 할 수 있는 걸까요?? 답은 프록시입니다!! Spring에는 두가지 프록시 구현체가 있는 데 Springboot에서는 CGLIb를 사용하기 때문에 CGLIb를 기준으로 설명하겠습니다! 아래는 에코노베이션 동아리에서 진행중인 도토링..
-
DTO에 대한 고민스터디/Spring 2023. 7. 17. 10:56
저번 주에는 카카오 테크 캠퍼스 2단계 과제 수행을 기회로 평소 DTO에 관해 고민한 것을 정리해보는 시간을 가졌습니다!! DTO는 Data Transfer Object 즉, 데이터를 전달할 때 사용하는 객체입니다. 먼저, 첫 번째 고민이었습니다.과연 DTO를 사용하면 어떤 이점을 얻을 수 있는 걸까요? 단일 호출 시 여러 매개변수를 일괄처리하여 네트워크의 오버헤드를 줄인다.직렬화의 캡슐화의 이점직렬화된 객체는 외부로부터 데이터를 캡술화하고 보호하는 데 도움이 된다. → 보안 기술 적용하기 좋다.객체를 직렬화함으로써 플랫폼간의 호환성을 높일 수 있습니다.엔티티를 프레젠테이션 레이어에 노출시키지 않을 수 있다. 위의 DTO 이점 중 3번에 대해서는 알고 있었지만, 1번과 2번 장점은 이번에 공부하며 처..
-
Filter와 FilterChain에 대하여 알아보자스터디/Spring 2023. 4. 7. 14:49
이번 포스팅에서는 Servlet Filter와 FilterChain에 대해 알아보겠습니다. 이름에서 짐작할 수 있듯이, FilterChain은 여러 개의 Filter를 체인 형태로 연결하여 순차적으로 처리하는 역할을 합니다. 어떻게 처리할 수 있는 지 알아보겠습니다. 그 전에 Filter에 대해서 가볍게 확인해보고 가겠습니다.Filter 인터페이스 Filter 인터페이스에는 doFilter 메서드가 있습니다. 해당 메서드의 파라미터에는 요청과 응답 정보를 담고 있는 ServletRequest와 ServletResponse 객체가 포함되어 있습니다. Filter는 이를 사용해서 웹 애플리케이션의 요청과 응답을 쉽게 처리할 수 있습니다. Filter의 doFilter 메서드의 동작 과정은 아래와 같습니다...
-
Argument Resolver에 대해서 알아보자스터디/Spring 2023. 3. 30. 13:57
Argument Resolver는 무엇일까요? 뜻을 직역해보면 "인수를 해결한다" 입니다. 그러나, 직역만으로는 Argument Resolver가 무엇을 하는 친구인지 잘 감이 오질 않습니다.뭐 "인수"와 관련되어 있다는 것 정도는 알 수 있을 거 같습니다. Argument ResolverArgumetResolver는 Handler가 필요로 하는 다양한 파라미터 값을 생성해주는 역할을 한다고 합니다. 이렇게 설명을 들으니 "인수를 해결한다" 라는 뜻이 무슨 의미인 지 감이 오는 것 같습니다.그리고, Argument Resolver는 축약된 이름이고 실제로는 HandlerMethodArgumentResolver 입니다. Dispathcer Servlet에서 RequestMappingHandlerAdapt..
-
쓰레드 풀을 이용한 쓰레드 관리스터디/Spring 2023. 3. 26. 22:51
최근에 계속 쓰레드에 관해서 공부하고 있다. 이번에는 Servlet 관점에서 보는 쓰레드 관리에 관하여 포스팅 하겠습니다. 먼저, Servlet 관점에서의 쓰레드를 보기 전에 웹의 요청 및 응답 흐름에 대해서 간단히 살펴보도록 하겠습니다. 먼저, 위 그림은 클라이언트에서 서버로 HTTP 요청을 보내고 서버는 이에 대한 응답을 주는 사진입니다. 과정을 정리해보자면, HTTP 요청시 WAS는 Request, Response 객체를 새로 만들어서 서블릿 객체 호출합니다.개발자는 Request 객체에서 HTTP 요청 정보를 편리하게 꺼내서 사용한다.개발자는 Response 객체에 HTPP 응답 정보를 편리하게 입력한다.WAS는 Response 객체에 담겨있는 정보로 HTTP 응답 정보를 생성한다. 2~3번에서..
-
Postman사용 방법스터디/Spring 2022. 10. 10. 00:23
GET 메소드 GET 요청은 전송할 때 필요한 데이터를 Body에 담지 않고, 쿼리스트링을 통해 전송합니다 Query Params를 이용한다. 쿼리스트링 : URL의 끝에 ?와 함께 이름과 값으로 쌍을 이루는 요청 파라미터 POST 메소드 요청 헤더의 Content-Type에 요청 데이터의 타입을 표시해야 한다. Content-type : 요청시 요청하는 자원의 형식을 명시하기 위해 헤더에 실리는 정보 None : Body에 보낼 값이 없을 때 사용한다. form-data : Multipart Form을 이야기하는 것으로, ASCII 문자값과 함께 바이너리 데이터(예를 들면, 이미지나 영상 파일)을 전송할 때 사용한다.(텍스트 + 파일) x-www-urlencoded : W3C에서 기본 content t..
-
스프링 컨테이너에 대해서 알아보자스터디/Spring 2022. 7. 15. 15:16
이번 포스팅에서는 스프링 컨테이너에 대해서 공부한 내용을 정리해보려고 합니다.스프링 컨테이너(Application Context)Application Context를 보통 스프링 컨테이너라고 합니다.스프링 컨테이너는 빈(Bean)을 싱글톤으로 관리합니다. 즉, 동일한 객체를 한 번만 생성하고 애플리케이션 전반에서 공유하여 사용합니다.스프링 컨테이너에 빈을 등록하기 위해서는 아래와 같이 코드를 작성할 수 있습니다.빈 직접 등록@Configuraionpublic class TestConfig { @Bean public Test test() { return new Test(): }}위 코드의 의미는 다음과 같습니다.@Bean을 사용하면 해당 객체를 스프링 컨테이너에서 빈으로 관리합니다.@Configurat..