본문 바로가기

전체 글71

[Spring] Bean 생명주기 콜백 콜백이란 어떤 이벤트가 발생했거나 특정 시점에 도달했을 때 시스템에서 호출하는 함수를 말해요. Bean 생명주기 콜백(Bean LifeCycle Callback)이란 단어를 들으면, 머릿속에 딱 와닿는 느낌이 없는듯해요. 각 단어에 많은 의미가 있기 때문이라 생각해요. 생명주기 콜백을 알아보기 전 각 용어에 대해 짚고 가볼 필요가 있어요. 스프링 빈 (Spring bean) 빈 또는 빈 객체는 스프링이 IoC 방식으로 관리하는 오브젝트라는 뜻이에요. 주의할 점은 스프링을 사용하는 애플리케이션에서 만들어지는 모든 객체가 다 빈은 아니라는 사실이에요. 그중에서 스프링이 직접 생성과 제어를 담당하는 객체만을 빈이라고 불러요. Bean 생명주기 Bean 객체가 생성되어 소멸하기 전까지의 모든 과정을 이르는 말이.. 2021. 8. 20.
[DB] NoSql이 무엇인지, 기존 RDBMS와의 차별점은 무엇인지 설명해주세요 이번 포스트는 SQL vs. NoSQL Databases: What’s the Difference? 을 번역하며 정리한 것이에요. NoSql 데이터베이스(비관계형 데이터베이스)는 관계형 데이터베이스와 방식은 다르지만 관계 데이터를 저장할 수 있어요. Not Only SQL, 기존의 관계형 DBMS가 갖고있는 특성 뿐만 아니라 다른 특성들을 부가적으로 지원한다는 것을 의미해요. 데이터베이스는 크게 SQL과 NoSQL, 관계형 데이터베이스와 비관계형 데이터 베이스로 나뉘어요. 둘의 차이점은 구축 방법, 저장 정보 유형 및 저장 정보에 따라 달라져요. 관계형 데이터베이스는 전화번호와 주소를 저장하는 전화번호부와 같이 구조화 되어있어요. 비관계형 데이터베이스는 사람의 주소와 전화번호부터 Facebook 좋아요 .. 2021. 8. 2.
[Logging] Logback이란? 블로그를 작성하고, 테코톡을 진행했어요. 더 쉽게 이해하고 싶다면 아래 영상을 시청해주세요! [10분 테코톡] ☂️ 검프의 Logging(로깅) #2 Logback 로깅 프레임워크 중 하나로, SLF4J의 구현체에요. SLF4J에 관한 설명은 앞선 포스팅으로 대신할게요. [Logging] SLF4J란? Logback 구조 Logback은 아래 3가지 모듈로 나뉘어요 logback-core logback-classic logback-access logback-core: 다른 두 모듈을 위한 기반 역할을 하는 모듈이에요. Appender와 Layout 인터페이스가 이 모듈에 속해요. logback-classic: logback-core에서 확장된 모듈로, logback-core와 SLF4J API 라이브러리.. 2021. 7. 14.
[Logging] SLF4J란? 블로그를 작성하고, 테코톡을 진행했어요. 더 쉽게 이해하고 싶다면 아래 영상을 시청해주세요! [10분 테코톡] ☂️ 검프의 Logging(로깅) #1 SLF4J(Simple Logging Facade for Java)는 이름에서 확인할 수 있듯이. java.util.logging, logback 및 log4j와 같은 다양한 로깅 프레임 워크에 대한 추상화(인터페이스) 역할을 하는 라이브러리에요. SLF4J는 추상 로깅 프레임워크이기 때문에 단독으로는 사용하지 않아요. 즉, 최종 사용자가 배포시 원하는 로깅 프레임워크를 결정하고 사용해도 SLF4J가 인터페이스화 되어있기에, SLF4J를 의존하는 클라이언트 코드에서는 실제 구현을 몰라도 돼요(의존관계 역전 법칙). SLF4J 동작과정 SLF4J은 간략히 아.. 2021. 7. 10.
[Docker] 도커란? 도커(Docker)? 컨테이너 기반 가상화 도구예요. 일반적으로 도커라 하면 도커 엔진, 또는 도커에 관련된 모든 프로젝트를 의미해요. 보통 도커 엔진이라는 의미로 많이 사용되는데, 도커 엔진은 컨테이너를 생성하고 관리하는 주체로서 이 자체로도 컨테이너를 제어하고, 다양한 기능을 제공하는 도커의 주 프로젝트이기 때문이에요. 여기서 컨테이너란 말이 어려워요. 컨테이너(Container) 사전적 의미로 컨테이너는 어떤 물체를 격리하는 공간을 뜻해요. 하지만 개발적 의미로는 이미지의 목적에 맞는 파일이 들어있는 파일시스템과 격리된 시스템 자원 및 네트워크를 사용할 수있 는 독립된 가상공간이라고 해요. 즉, 이미지의 목적에 따라 생성되는 프로세스 단위의 격리 환경이에요. 호스트 입장에서는 격리된 환경을 가진 프.. 2021. 6. 29.
[Spring] 스프링 Interceptor의 동작 과정 Handler Interceptor 전반적인 클라이언트 요청흐름 그림에서 확인해보면, Spring Container내에서 Handler Mapping(수행할 handler 결정) 이후 HandlerAdaptor(결정된 핸들러 수행) 전/후 과정에서 수행됨을 확인할 수 있어요. 주 사용 목적은 핸들러(컨트롤러)의 수정없이 핸들러 수행 전/후처리 동작을 추가하여 핸들러(컨트롤러)의 반복적인 코드를 제거하기 위함이에요. 쉽게 말해, HandlerMapping이 결정한 handler을 HandlerAdapter 수행 전, 후로 가로체어 추가적인 작업이 가능해요. 또한 View 렌더링 이후 클라이언트에게 Response를 전달하기 전에 추가적인 작업이 가능해요. 어디에 사용될까? 가만보니, Filter와 매우 유.. 2021. 6. 22.
[Spring]서블릿 Filter를 사용해보자 스프링 mvc의 전반적인 요청과정은 이전에 정리했어요 [Spring] 쓰레드 관점에서 본 Spring MVC HTTP 요청과정 Servlet Filter 요청을 받은 WAS가 Servlet Container에게 Request, Response를 던져주면, 이를 먼저 Filter에서 받아. Request에 대한 필터링를 진행하고, 서블릿에게 ServletRequest, ServletResponse를 건네요. 요청에 대한 작업이 끝난 후 Response에 대한 필터링를 진행해요. 쉽게말해, 요청과 응답에 대한 필터링을 진행해요. 동작과정 import javax.servlet.*; import java.io.IOException; public class GumpFilter implements Filter { .. 2021. 6. 18.
[Spring] 쓰레드 관점에서 본 Spring MVC HTTP 요청과정 우선 스프링 MVC의 요청과정을 큰 그림으로 보기로 해요. 큰 흐름으로, 클라이언트가 HTTP 요청을 보내면, WAS는 TCP/IP 연결 대기 과정(welcome 소켓)에서 클라이언트를 위한 소캣(연결 소켓)을 생성해서 연결해요. 연결 이후 많은 과정이 일어나요. (다음 과정으로 간다는 것은, 반환되지 않았다는 얘기에요) WAS는 HTTP 메시지를 파싱해서, Web Server에서만 필요한 정보면, 정적 페이지를 반환해요. Request, Response 객체를 만들어 Filter 객체에 던져줘요. Filter에서 요청된 내용을 변경(인코딩 변환 처리)하거나, 여러가지 체크(XSS 방어)를 해요. 여기서 체크에 걸린다면, 예외를 반환해요. WAS에서 HttpServletRequest, HttpServle.. 2021. 6. 7.
[우아한테크코스 3기] 레벨 2 - 성장 🖊️우테코에서 찾은 나만의 효과적인 공부법 미뤄왔던 책을 펼쳐요. 책의 기대와는 다르게 1장부터 읽지 않아요. 먹고 싶은 건 살이지 뼈가 아니기 때문이에요. 맛있는 부분만 먹고, 책을 다시 덮어요. "몸에 좋은 건 쓰다"라는 말을 좋아했어요. 먹기 싫고 손이 잘 가지 않지만, 몸에 좋으니까. 참고 먹었어요. 하지만 이제는 아니에요. "맛있게 먹으면 몸에는 몰라도 정신에는 좋다.", 지금의 생각이에요. 속 쓰림 습관이 있었어요. 책을 사거나 강의를 사면, 처음부터 끝까지 봐야 속이 편해지는. 간드러진 목표를 세우고, 이미 목표를 이뤘다는 착각과 안정을 찾는. 웃기지만 항상 속은 불편했고, 목표는 계획처럼 되질 않았어요. 불쌍한 속은 왜 항상 불편해야만 했을까요? 정신과 시간의 방 미션 중 Controlle.. 2021. 6. 5.