Spring MVC 핵심 개념: 구조와 동작 원리 완벽 이해
김영한님의 Spring MVC 1편을 정리한 내용입니다. 서블릿 @ServletComponentScan 스프링 부트는 서블릿을 직접 등록해서 사용할 수 있도록 어노테이션을 지원한다 @WebServlet 서블릿 어노테이션 name : 서블릿 이름 urlPatterns : URL 맵핑 HttpServletRequest 서블릿은 개발...
김영한님의 Spring MVC 1편을 정리한 내용입니다. 서블릿 @ServletComponentScan 스프링 부트는 서블릿을 직접 등록해서 사용할 수 있도록 어노테이션을 지원한다 @WebServlet 서블릿 어노테이션 name : 서블릿 이름 urlPatterns : URL 맵핑 HttpServletRequest 서블릿은 개발...
코드 리뷰 연동 프로젝트를 시작한지 1달 정도가 지나고 있다. 그동안 혼자 프로젝트를 진행하다보니 설계, 기능 구현, 테스트에 집중하여 코드 품질을 미처 챙기지 못하였다. 이번에 동료 개발자분께서 프로젝트에 합류하게 되면서 구현했던 코드에 대해 리뷰 받을 기회가 있어서 변경 전과 변경 후 코드에 대해 비교하는 글을 써보고자 한다. 리팩토링한 실...
스프링 테스트 코드를 작성하면서 테스트 관련 어노테이션이 너무 다양하고, 무엇을 위해 쓰는 지 몰라서 원하는 대로 테스트 코드를 작성하기가 어려웠다. 테스트 코드 관련 내용을 차근히 정리할 필요성을 절실히 느끼게 되었다. @SpringBootTest(통합 테스트) 애플리케이션 컨텍스트(빈, 설정, 구성 요소 )등을 로드하는 테스트 어노테이션...
Spring AOP 스프링 AOP를 사용하면 로깅, 보안, 트랜잭션 등 공통적인 관심사를 모듈화하여 코드 중복을 낮추고, 유지 보수성을 높힐 수 있다. AOP(Aspect-Oriented Programming) 은 객체 지향 프로그래밍(OOP)를 보완하는 기술로 메소드나 객체의 기능을 핵심 관심사(Core Concern)와 공통 관심사(Cros...
캐시의 필요성 외부 시스템과 연동하는 프로젝트를 진행 중인데, 연동하는 데이터들은 수정이 적고 조회는 빈번하기 때문에 캐시에 연동 정보를 저장하면 DB 조회를 줄여 성능을 개선할 수 있기에 캐시 도입을 알아보게 되었다. 스프링 캐시 특징 스프링에서는 Bean의 메소드에 캐시를 적용할 수 있는 기능을 제공한다. 스프링의 캐시 추상화는 AOP를...
김영한의 실전 자바 기본편에서 학습한 내용을 정리한 글입니다. 자바에서의 대입? 항상 변수의 값을 복사해서 대입한다. 기본형(Primitive Type)이면 변수에 들어있는 실제 사용하는 값을 복사하여 대입하고 참조형(Reference Type)이면 변수에 들어있는 참조값을 복사하여 대입한다. 참조형이란? 데이터에 접근하기 위한...
원티드 프리온보딩 백엔드 챌린지 아키텍쳐 설계을 정리한 내용입니다. 1.메시지 큐 1.1 메시지 큐란 생성자는 이벤트를 발행하여 메시지 큐에 보관하고, 메시지큐는 소비자가 꺼낼 때까지 안전하게 저장한다. 비동기 통신 매체이다. 1.2 장점 서비스 또는 서버 간 결합을 느슨하게 해주기 때문에 규모 확장성이 보장되어야 하는 어플리케이션을 안...
원티드 프리온보딩 백엔드 챌린지 아키텍쳐 설계을 정리한 내용입니다. 1.데이터 베이스 다중화 1.1목적 대부분의 어플리케이션은 쓰기보다 읽기 연산이 많기 때문에 성능을 위해 데이터 변경은 주 DB로하고, 읽기 연산은 부 데이터베이스 서버들로 분산한다. 1.2개념 주 데이터베이스(Master) Insert, Update, Delete...
원티드 프리온보딩 백엔드 챌린지 아키텍쳐 설계을 정리한 내용입니다. 사전과제 동시에 같은 DB Table row 를 업데이트 하는 상황을 방어하기 위해 어떻게 개발하실 건지 설명해주세요. MySQL을 사용한다고 가정하였을 때 동시에 같은 DB Table row를 업데이트를 방지하기 트랜잭션 또는 락을 사용합니다. 트랜잭션 SET TRANSA...
OSSCA 2차 체험형 프로젝트 Git / Github 시작부터 DevOps / MLOps 까지를 6주간 참여하게 되었습니다. 이번 포스팅에서는 git 개념과 프로젝트 실습 내용을 정리해나갈 예정입니다. 프로젝트 명 Git / Github 시작부터 DevOps / MLOps 까지 기간 협업도구(Git) 심화 과정 멘토링(3주) + 분야별 오...