각종 학습 요약
-
Spring: Proxy를 통한 Spring Data Repository 초기화와 설정각종 학습 요약/Spring 2022. 7. 1. 23:44
Proxy를 통한 Spring Data Repository 초기화와 설정 이 글의 카테고리를 SpringAOP로 할 지, Spring Data로 할 지, 특정 질문에 대한 답변이니까 그냥 별도의 카테고리로 할 지 고민을 하다가 그냥 Spring이라고만 적기로 했습니다. 잡담은 차치하고... 왜 이런 글을 쓰게 되었냐면요. 오늘 백엔드 부트캠프 오픈채팅의 대장님이신 은철님께서 "Spring Data JDBC의 CrudRepository는 구현체도 없는데 어떻게 쓸 수 있는거냐"라는 질문을 남겨주셨습니다. 저도 어디서 들었는지 모르겠는데 대강 알고 있는 정보로 나름의 답변을 드렸어요. 제 기억에, '프록시로 구현될걸요?'정도의 뉘앙스로 답변을 했던 거 같아요. 그런데 썩 명쾌한 답변이 된 것 ..
-
Java: JDBC API 기본 개념 이해각종 학습 요약/Java 2022. 6. 30. 13:46
JDBC API 기본 개념 이해 이 글은 JDBC가 무엇인지 알아보고 사용되는 과정에서 일어나는 일들을 살펴보는 글입니다. JDBC란? JDBC API는 Java 어플리케이션에서 데이터베이스와 연결하여 자원을 사용할 수 있도록 해주는 표준 API입니다. 어플리케이션 코드가 DB 벤더(Mysql, oracle, PostgreSQL 등...)에 종속되지 않도록 인터페이스 역할을 하고 있습니다. 벤더에 따라 JDBC 구현체가 존재하고, 어플리케이션 개발자는 이를 이용해서 다양한 벤더의 데이터베이스에 접근할 수 있습니다. JDBC 연결 과정 몇 가지 단계가 있긴 한데 아주 단순합니다. JDBC 드라이버를 로드해서 데이터베이스와 연결할 준비를 하고요. 준비를 했으니 연결합니다. 커넥션(Connection)을 얻어..
-
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이라고 합니다. 빈의 ..
-
Framework와 Library의 차이각종 학습 요약/Spring 2022. 6. 14. 11:12
Framework와 Library의 차이 프레임워크와 라이브러리의 차이를 검색하면 흐름이 어쩌고 제어가 저쩌고 하는 이야기들을 많이 볼 수 있습니다. 이 글도 그러한 글인데, 스스로 이해를 했는지 검토하기 위해 자신의 언어로 나름 풀어보려는 시도입니다. 프레임워크나 라이브러리나... 프레임워크나 라이브러리나 둘 다 개발자가 코딩하긴 마찬가진데 제어권이 어디에 따로 있다는 거야? 라는 생각을 저만 했던 건 아니겠지요... 일단 쉽게 알 수 있는 차이는 이것입니다. 라이브러리 : 기능의 집합 프레임워크 : 기능과 규칙의 집합 라이브러리가 좀 더 간단하게 이해할 수 있기 때문에 라이브러리부터 설명을 해볼게요. 비유하자면, 라이브러리는 설명서가 존재하지 않습니다. 라이브러리는 도구예요. 그 도구를 작동시키는 사..