전체 글 128

디자인 패턴의 종류 (2) Factory Pattern

➡️ 팩토리 패턴 (Factory Pattern)객체를 사용하는 코드에서 객체 생성 부분을 떼어내 추상화하는 디자인 패턴이다. 즉, 상속 관계에 있는 두 클래스에서 상위 클래스가 중요한 뼈대를 결정하고 하위 클래스에서 객체 생성에 관한 구체적인 내용을 결정하는 형태를 갖는다.public abstract class RobotFactory { abstract Robot createRobot(String name);}public class SuperRobotFactory extends RobotFactory { @Override Robot createRobot(String name) { switch(name) { case "super" : return new SuperRobot(); case "pow..

디자인 패턴의 종류 (1) Singleton Pattern

➡️ 싱글톤 패턴 (Singleton Pattern)객체지향 프로그래밍(OOP)에서 사용되는 디자인 패턴 중 하나로, 하나의 클래스에 대해 프로그램의 전체서 하나의 인스턴스만 가지는 소프트웨어 설계 패턴이다. 여러 개의 인스턴스로 만든다는 것의 의미는 메모리에 여러 번 각기 다른 인스턴스를 할당하는 것을 의미하는데, 그러지 않고 한 번만 메모리를 할당하여 여러 클래스에서 이를 공유하여 사용하는 방식이다. 하나의 인스턴스를 만들어 놓고 다른 여러 모듈에서 사용하기 때문에 인스턴스 생성 비용이 줄어드는 장점이 있는 반면, 의존성이 높아진다는 단점이 있기 때문에 이를 고려하여 해당 패턴을 사용해야 한다. 이러한 생성 비용이 중요한 데이터베이스 연결 모듈에 많이 사용되는 패턴으로 가장 많이 사용되는 디자인 패턴..

Spring : 동작원리와 단계별 데이터 전송형식 (Servlet Container, DispatcherServlet, View, ViewResolver, MVC, DTO, DAO)

각 구성요소에 대한 설명은 여기를 참고해주세요. 아래 글에서도 주요 구성요소마다 같은 링크가 첨부되어 있습니다.애플리케이션과 구성 요소의 종류에 따라 포함관계, 순서, 설명이 일부 달라질 수 있는 점 양해 바랍니다.스프링 프레임워크의 하위 프레임워크인 스프링 시큐리티가 궁금하다면, 상단의 스프링과 스프링부트 또는 여기를 클릭하여 확인해주세요.스프링부트(톰캣 내장), REST API 사용하는 경우에 대해 설명하고 있으니 참고바랍니다. 블로그 목차➡️스프링의 동작원리➡️스프링 MVC의 데이터 전송형식 ➡️ 스프링의 동작원리이 전 글에서 스프링의 동작원리를 이해하기 위해, Servlet Container, Dispatcher Servlet, Handler Mapping, View, View Resolver, ..

Spring : 구조와 구성요소 (3) HttpServletRequest, ServletRequest, DTO, DAO

스프링/스프링부트 동작원리를 학습하기 앞서그에 필요한 배경지식을 쌓는 블로깅입니다.그럼 지금부터 구조와 구성요소를 하나씩 살펴봅시다.본 시리즈는 세 편에 걸쳐 진행됩니다.참고로 아직 공개하지 않은 첫 번째 편은 웹 애플리케이션의 내부 구조에 대한 이야기로보다 나은 내용을 위해 수정 중이니 양해바랍니다. https://meitner.tistory.com/entry/Spring-%EC%8A%A4%ED%94%84%EB%A7%81-%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC%EC%9D%98-%EA%B5%AC%EC%A1%B0%EC%99%80-%EB%8F%99%EC%9E%91%EC%9B%90%EB%A6%AC-2 Spring : 구조와 구성요소 (2) Servlet Contain..

Spring : 구조와 구성요소 (2) Apache Tomcat, Servlet Container, Servlet Filter, Dispatcher Servlet

스프링/스프링부트 동작원리를 학습하기 앞서 그에 필요한 배경지식을 쌓는 블로깅입니다.그럼 지금부터 구조와 구성요소를 하나씩 살펴봅시다.본 시리즈는 세 편에 걸쳐 진행됩니다.참고로 아직 공개하지 않은 첫 번째 편은 웹 애플리케이션의 내부 구조에 대한 이야기로보다 나은 내용을 위해 수정 중이니 양해바랍니다.https://meitner.tistory.com/entry/Spring-%EA%B5%AC%EC%A1%B0%EC%99%80-%EA%B5%AC%EC%84%B1%EC%9A%94%EC%86%8C-3-HttpServletRequest-ServletRequest-DTO-DAO Spring : 구조와 구성요소 (3) HttpServletRequest, ServletRequest, DTO, DAO스프링/스프링부트 동작..

Web : 서버의 종류 (Static/Dynamic Web Server, WAS, Apache Tomcat)

➡️ 서버의 종류“서버란 정보를 제공하는 역할을 하는 것을 통칭하는 용어이며, 클라이언트는 정보를 요청하고 제공 받는 역할을 하는 모든 것을 가리킨다. 즉, 서버와 클라이언트는 우리에게 친숙한 물리적 컴퓨터와 같은 하드웨어일 수도, 가상머신과 같은 소프트웨어일 수도 있다."CF. 엄밀히 말하면 정확하진 않지만 이해를 위한 포함관계 설명 : 웹 서버, 웹 애플리케이션 서버, 서블릿 컨테이너는 역할이 맞물려있어 많이들 헷갈려하곤 하는데, 이들을 보다 직관적으로 이해하기 위해 포함관계를 말하자면 다음과 같다. 웹 애플리케이션 서버 vs. 웹 서버 : 웹 애플리케이션 서버는 웹 서버의 기능을 포함하면서도 동적 웹 애플리케이션을 실행할 수 있는 서버이므로 더 큰 개념으로 이해할 수도 있지만, 웹 서버와 웹 애플리..

SpringBoot : 스프링부트의 구조

소프트웨어 아키텍처 패턴(레이어드 패턴)과 알아보는 스프링부트의 구조➡️ 스프링부트의 소프트웨어 아키텍처 패턴각 계층이 다음 계층과 통신하는 레이어드 패턴(Layered Pattern) 구조를 따른다.   ✅ 프레젠테이션 계층 (Presentation Layer) : MVC 패턴을 사용한다고 했을 때 스프링부트 프로젝트의 컨트롤러(Controller)가 프레젠테이션 계층의 역할을 수행하며, HTTP 요청을 받아서 요청을 비지니스 계층으로 전송한다. 컨트롤러는 스프링 부트 내에 여러 개 존재할 수 있다.   ✅ 비지니스 계층 (Buisiness Layer) : MVC 패턴을 사용한다고 했을 때 스프링부트 프로젝트의 서비스(Service)가 비즈니스 계층의 역할을 수행하며, 모든 비즈니스 로직을 처리한다. ..

Spring Security Series (2) 동작 원리 (ver Spring Boot 3.x.x, Spring Security 6.x.x)

스프링 부트 요청 처리 흐름 요약 (with Spring Security)1. 클라이언트 요청 → 2. 서블릿 컨테이너(Apache Tomcat)로 전달 → 3. Spring Security 필터 체인 실행→ 4. DispatcherServlet으로 요청 전달 → 5. 핸들러 매핑으로 적절한 컨트롤러 찾기 → 6. 핸들러 어댑터로 컨트롤러 메소드 실행 → 7. 컨트롤러 메소드 실행 → 8. 서비스 및 비즈니스 로직 처리 → 9. 응답 반환 → 10. 필터/인터셉터 후속 처리 → 11. HTTP 응답 클라이언트로 전송스프링 시큐리티 프레임워크의 동작원리이 글은 Spring Boot 3.x.x, Spring Security 6.x.x를 기준으로 설명합니다.앞으로의 설명에서 웹 애플리케이션(WAS, Web A..

Spring Security Series (1) 웹 애플리케이션 보안 취약점과 그 대응 전략 (CSRF, XSS)

스프링 시큐리티 시리즈의 첫 번째 글인 [ 웹 애플리케이션 보안 취약점과 그 대응 전략 ]에서는앞으로의 스프링 시큐리티 학습을 위해 우선적으로 스프링 시큐리티가 무엇인지 감을 잡는 것을 주목표로 잡았습니다. 덧붙여 스프링 시큐리티를 왜 그리고 언제 사용하는지 알아봄으로써 포문을 열기 위해, 웹 애플리케이션 보안 취약점과 각각에 대한 스프링 시큐리티의 대응 전략 또한 살펴봅시다. 참고로 해당 시리즈는 블로그 카테고리의 스프링 시큐리티 항목에 포함되어 있습니다.스프링 시큐리티란?스프링 시큐리티(Spring Security)는 Java 기반 웹 애플리케이션의 보안을 위해, 주로 시스템의 최상위 계층인 애플리케이션 수준에서 작동하는 스프링 컨텍스트 관리 기반의 프레임워크입니다. 때문에 구성과 동작 방식도 스프링..

Annotation : 검증 관련 어노테이션 (@Valid, @Validated)

CF. Validation과 Verification: 두 용어 모두 확인 및 검증을 의미한다. 다만 그 검증에 있어 영역에 차이가 있는데, Verification은 개발자 관점에서의 시스템 검증을 의미한다. 개발하고 있는 시스템이 미리 정의한 사양(specification)에 부합하는지 검증하는 것이다. 아직 실제 시스템이 구현된 상태가 아닐 수 있기 때문에 시뮬레이션을 통해 검증이 이루어진다.반면, Validation은 사용자 관점에서의 시스템 검증을 의미한다. 개발 완료된 시스템이 사용자의 요구사항을 충족하는지 확인하는 지 검증하는 것이다. 실제 시스템이 구현된 상태이기 때문에 직접 타깃 시스템에 검증을 하게 된다.➡️ @Valid Validation을 목적으로 하는 어노테이션이다. Java의 Bea..