각종 학습 요약/Spring
-
API 호출을 위한 세 가지 Spring 도구(Spring 6에서 새롭게 지원하는 HttpInterface)각종 학습 요약/Spring 2023. 3. 17. 14:12
개요 오늘 포스팅은 토비님의 'Spring 6의 새로운 HTTP Interface와 3 가지 REST Clients 라이브 코딩' 영상을 보고 나서 작성하는 글입니다. Spring에서 제공하는 RestTemplate과 WebClient, 그리고 Spring 6에서 새롭게 제공하게 된 HttpInterface를 간단히 살펴봅니다. 어떻게 사용되는지 하나씩 코드로 살펴보겠습니다. 1. RestTemplate 간단히 실행 결과 확인을 위해 ApplicationRunner를 사용합니다. RestTemplate은 Spring3.0 부터 사용되어온 동기 방식의 클라이언트입니다. Spring Web 프로젝트를 사용하면서 외부의 api를 호출할 일이 있으면 가장 편하게 선택할 수 있는 방법인 것 같아요. 사용 방법 자..
-
Spring : 이벤트 리스너 기본 개념 (@EventListener, @TransactionalEventListener)각종 학습 요약/Spring 2022. 7. 11. 17:36
Spring : 이벤트 리스너 기본 개념 (@EventListener, @TransactionalEventListener) 이 글에서는 스프링에서 이벤트를 처리하는 어노테이션을 소개합니다. 스프링에서는 이벤트 어노테이션을 통해서 어플리케이션 전체에 이벤트를 발행(Publish)할 수 있습니다. 어떻게 이벤트를 발행하고 어떻게 이벤트리스너를 구현하는지 알아보도록 할게요. @EventListener Spring 4.2 이상에서 이벤트를 처리하는 아주 간단한 방법으로 @EventListener가 적용되었습니다. 이로써 특정 클래스를 상속하지 않고도, 즉 스프링에 종속되지 않고 순수 POJO 객체만을 활용해서도 이벤트 프로그래밍이 가능합니다. 간단한 사용 예시를 남겨보겠습니다. 이벤트를 발행할 쪽에서는 Appl..
-
Spring: Proxy를 통한 Spring Data Repository 초기화와 설정각종 학습 요약/Spring 2022. 7. 1. 23:44
Proxy를 통한 Spring Data Repository 초기화와 설정 이 글의 카테고리를 SpringAOP로 할 지, Spring Data로 할 지, 특정 질문에 대한 답변이니까 그냥 별도의 카테고리로 할 지 고민을 하다가 그냥 Spring이라고만 적기로 했습니다. 잡담은 차치하고... 왜 이런 글을 쓰게 되었냐면요. 오늘 백엔드 부트캠프 오픈채팅의 대장님이신 은철님께서 "Spring Data JDBC의 CrudRepository는 구현체도 없는데 어떻게 쓸 수 있는거냐"라는 질문을 남겨주셨습니다. 저도 어디서 들었는지 모르겠는데 대강 알고 있는 정보로 나름의 답변을 드렸어요. 제 기억에, '프록시로 구현될걸요?'정도의 뉘앙스로 답변을 했던 거 같아요. 그런데 썩 명쾌한 답변이 된 것 ..
-
Spring: AOP의 기본적인 개념 & SpringAOP 훑어보기각종 학습 요약/Spring 2022. 6. 20. 13:05
AOP의 기본적인 개념 & SpringAOP 훑어보기 이 글에서는 Java안에서 다뤄지고 있는 AOP 개념에 관한 주제들을 간략하게 훑어봅니다. 근데 SpringAOP가 주인공이에요. AOP란? Aspect Oriented Programming. 한글로 관점(관심)지향 프로그래밍. 처음에 이름만 봐서는 무슨 뜻인지 전혀 와닿지 않았고, 지금 봐도 솔직히 왜 저런 이름인지는 모르겠어요. ㅋㅋ. AOP 개념을 한 마디로 요약하면, 원하는 시점에 작성된 코드에 개입하는 것입니다. 이 설명을 들으면, 질문이 많은 사람이라면 이런 질문을 떠올릴 수 있을 거 같아요. '개입할 거면, 그냥 애초에 코드로 작성하면 되잖아?' 맞아요. 그냥 코드 안에 같이 작성해도 되겠죠. 언제 개입을 고려하면 좋을까요?..
-
Error Handling: Spring에서 Exception 대응하기각종 학습 요약/Spring 2022. 6. 17. 20:51
Error Handling: Spring에서 IllegalArgumentException 대응하기 스프링부트 프로젝트를 빠르게 훑어보고자 하는 요구가 있어서, 최근 이동욱 님의 스프링 부트와 AWS로 혼자 구현하는 웹서비스를 보고 있습니다. 간단한 생성/조회/수정/삭제 기능을 구현해보는 파트를 진행하다가 마지막 삭제 파트를 따라서 구현해놓고 궁금증이 생겼습니다. 다 따라서 만들긴 했는데... (삭제는 이미 잘 되는 상황) 삭제는 잘 작동하는데.... 만약에 다시 삭제를 시도하면 어떻게 될까? 해당 부분을 위해서 Service 계층에서 삭제하기 전에 먼저 조회로 리포지토리.findById(id).orElseThrow(() -> new IllegalArgumentException(id + "번 게시글이 없어..
-
Spring: 의존관계 주입(DI, Dependency Injection) 방식 네 가지 요약각종 학습 요약/Spring 2022. 6. 16. 15:37
Spring: 의존관계 주입(DI, Dependency Injection) 방식 네 가지 요약 이 글에서는 Spring Framework의 의존관계 주입(이하 'DI') 방식 네 가지를 살펴보고, 각각의 방식이 어떤 특징을 가지고 있는지 요약해보겠습니다. DI의 네 가지 방식 Spring Framework에서 컨테이너가 관리하고 있는 Bean 객체에 의존관계를 주입하는 방법에는 크게 네 가지가 있습니다. 생성자 주입 세터(수정자) 주입 필드 주입 (일반)메서드 주입 1. 생성자 주입 생성자 주입은 아주 자주 사용됩니다. 왜 자주 사용되는지, 어떤 특징이 있는지 잘 알아둘 필요가 있습니다. 단 한 번만 호출되는 것을 보장합니다(생성 시). 불변 객체를 만들 수 있습니다. 생성 시점(컨테이너에..
-
Spring: IoC와 DI를 예시로 쉽게 이해해보자각종 학습 요약/Spring 2022. 6. 16. 13:13
지난 포스트에서 컨테이너와 빈에 대해 말했었어요. 그 내용들은 어렵지 않게 '아 그런게 있구나' 할 수 있는 내용이었죠. 근데 요 다음부터 바로 빈의 의존 주입 같은게 튀어나오면 '응? 갑자기? 왜? 뭐 때문에?'와 같은 생각이 들기 십상이거든요?(일단 저는 그랬습니다...) "컨테이너란게 있고, 빈이란게 있는데, 그래서 뭐. 굳이 왜 걔네가 객체를 관리해주고, 우리는 그걸 써야돼?"라는 질문을 해결하지 못하면, 이후의 스프링 내용들을 정말로 이해할 수는 없을 거에요. 그냥 외워서 사용하게 되는 것이죠. 그래서 이해를 돕고자 예시로 설명을 준비해봤습니다. 저나 여러분이나, 스프링을 공부하고 좀 더 잘 이해하는데에 도움이 되기를.... 바랍니다! (잘못된 설명이 있다면 지적 부탁드려요..!) 00:00 -..
-
Spring: Spring Container와 Bean각종 학습 요약/Spring 2022. 6. 16. 11:56
Spring Container와 Bean 스프링 컨테이너와 빈에 대한 간략한 설명글입니다. Spring Container란? 스프링 웹 어플리케이션 내부에서 활용되는 객체들을 관리하고 있는 관리자이자 저장소입니다. 객체를 생성하고, 저장하고, 소멸합니다. 스프링 컨테이너가 객체를 생성/사용하는 기본적인 값은 싱글톤입니다. 컨테이너에서 별다른 설정 없이 객체를 얻었다면(getBean()), 싱글톤 객체가 반환됩니다. 싱글톤 객체들은 컨테이너가 생성되고 나서 바로 객체를 생성하고, 보관하다가 어플리케이션 종료 시점에 소멸됩니다. 스프링컨테이너, DI컨테이너, IoC컨테이너, 아니면 그냥 편하게 컨테이너라고 불립니다. Bean이란? Container에서 관리/사용되는 모든 객체를 Bean이라고 합니다. 빈의 ..