전략 패턴(Strategy Pattern)이란?
·
JAVA
전략 패턴을 알아보자 1. 전략 패턴이란?전략 패턴이란?전략 패턴은 알고리즘 군을 정의하고 각각을 캡슐화하여 교환해서 사용할 수 있도록 하는 디자인 패턴이다. 이를 통해 알고리즘을 사용하는 클라이언트 코드에 영향을 주지 않고 알고리즘을 독립적으로 변경할 수 있다. 전략 패턴의 구성 요소Strategy 인터페이스알고리즘을 정의하는 공통 인터페이스다.특정 작업을 수행하기 위한 메서드를 선언한다.Concrete StrategyStrategy 인터페이스를 구현하는 구체적인 알고리즘 클래스다.다양한 알고리즘이나 행동을 구현한다.ContextStrategy 객체를 가지고 있으며, 클라이언트로부터 요청을 받아 Strategy에 작업을 위임한다.전략을 설정하고 실행하는 역할을 한다.전략 패턴의 작동 방식클라이언트가 C..
[Spring] 스프링 빈 설정의 진화: XML에서 자바, 그리고 컴포넌트 기반으로
·
Spring 기초/Spring 설정
스프링에서는 빈 등록 과정이 어떻게 발전되어 왔을까?📌 서론Spring Framework에서의 빈(bean) 설정 방식은 시간이 지나면서 점차 발전해 왔다.초기에는 XML 기반 설정이 주로 사용되었으나, 자바 기반 설정이 도입되면서 설정 관리가 더욱 간편해졌다.이후, 컴포넌트 기반 설정이 등장하면서 빈 관리의 자동화와 모듈화가 크게 개선되었다. 이번 글에서는 이러한 빈 설정 방식의 발전 과정을 예시와 함께 단계별로 알아보자. 참고로 저는 구버전의 springFramework로 개발할 일이 있었는데 xml로 빈 등록하는 과정은 생각보다 복잡했습니다. ㅠㅠ 그래서 이렇게 발전된 것이 너무나도 감사합니다. 1. XML 기반 설정초기 스프링의 빈 설정 방식Spring Framework의 초기 버전에서는 애플..
[Spring] 스프링 순환참조
·
Spring 기초/Spring 기초 지식
스프링의 순환참조 상황을 알아보자📌 서론스프링으로 개발을 하다 보면 정말 가끔씩 발생하는 오류가 있다. 바로 circular references (순환참조)다.스프링 빈을 등록하면서 2가지의 클래스가 서로를 의존하면 이러한 문제가 발생한다. 서버가 실행되면 스프링 컨테이너가 빈을 등록하는 과정에서 의존성 주입을 하는데 이 과정에서 서로 의존하는 두 빈이 서로를 기다리며 무한루프에 빠지게 되는 것이다.순환참조라는 이름만 봐도 순환해서 참조한다는 의미이므로 생각해 보면 간단하게 한쪽의 참조만 끊어주면 해결될 것으로 보인다. 그러나 가끔은 서로의 로직을 사용해야 하는 경우가 있을 수도 있다. 이때는 어떻게 문제를 해결해야 할까?  이런 상황에 문제를 해결하는 여러 가지 방법이 존재한다. 1. @Lazy 어노..
[Spring] 톰캣과 스프링: 웹 요청의 라이프사이클 이해하기
·
Spring 기초/Spring 기초 지식
톰캣과 스프링의 웹 요청 처리방법을 이해해 보자 📌 서론 스프링은 복잡한 저수준의 소켓 통신과 스트림 처리를 추상화하여, 개발자가 고수준의 비즈니스 로직에 집중할 수 있도록 설계되었다. 이번 포스트를 통해 스프링 프레임워크와 서블릿 컨테이너(예: Tomcat)가 HTTP 요청을 어떻게 처리하는지, 그리고 이 과정에서 각각의 역할이 무엇인지 상세히 살펴보자 1. 스프링의 http 요청과 관련된 용어 이해하기 서블릿 컨테이너 스프링 애플리케이션은 일반적으로 서블릿 컨테이너(예: Tomcat, Jetty) 내에서 실행된다. 이러한 컨테이너는 저수준의 네트워크 통신을 처리하고, HTTP 요청을 서블릿 API로 변환해 애플리케이션에 전달하는 역할을 한다. DispatcherServlet DispatcherServ..
주니어 개발자의 결합도(Coupling) 이해하기: 스프링에서 결합도 관리하기
·
Spring 기초/Spring 기초 지식
결합도(Coupling)는 (클래스, 모듈, 함수 등) 간의 상호 의존성의 정도를 나타낸다. 📖 서론 개발 분야에서 "결합도(Coupling)"는 소프트웨어의 다양한 구성 요소 간의 상호 의존성의 정도를 나타내는 중요한 개념이다. 이는 소프트웨어 구조의 효율성과 유지보수의 용이성을 결정하는 핵심 요소 중 하나로, 소프트웨어 코드 간의 의존 관계의 정도를 나타낸다. 코드 사이에 강한 결합이 있으면, 한 부분이 바뀌었을 때 다른 부분에도 영향을 많이 준다. 그래서 우리는 보통 낮은 결합도를 유지하려고 한다. 낮은 결합도가 좋은 이유는 몇 가지가 있다. 1. 유지보수의 용이성: 낮은 결합도는 한 컴포넌트의 변경이 다른 컴포넌트에 미치는 영향을 줄여, 유지보수를 용이하게 해 준다. 2. 재사용성의 증가: 각 컴..
SpringBoot: 리소스 관리하기 (resource)
·
Spring 기초/Spring 기초 지식
스프링 부트는 내부적으로 리소스를 어떻게 로딩할까? 📌 서론 길을 걸어가던 도중 스프링, 스프링부트에서는 어떻게 application.yml이나 js, css 같은 파일들을 읽어 들여서 사용하는지에 대한 궁금증이 생겼다. 그래서 당장 조사를 했고 이를 정리해 봤다. 지금부터 그 내용을 공유한다. 1. 리소스 로딩의 중요성과 기본 개념 스프링 어플리케이션의 성능과 개발 효율성 향상을 위해서는 다양한 외부 리소스(파일, 이미지 등)를 효율적으로 로딩하는 것이 중요하다. Resource 인터페이스는 다양한 리소스 유형에 대해 일관된 API를 제공하며, 리소스 존재 여부 확인, 파일/URL 접근 등 다양한 기능을 제공한다. 리소스 로딩의 중요성 스프링 어플리케이션에서 리소스 로딩은 핵심적인 부분이다. 외부 리소..
[Spring] yml vs properties 설정파일 비교
·
Spring 기초/Spring 설정
application.yml VS application.properties 이 두가지를 비교해 보자 📌 서론 Spring Boot 프로젝트에서 가장 중요한 부분 중 하나는 설정 파일이다. 처음 프로젝트를 만들면 application.properties가 있는데 대부분은 이 파일을 application.yml로 변경해서 사용한다. 이 설정 파일들에 대해서 알아보자 1. application.properties 1-1. 형식 Key-Value 쌍으로 구성된, properties 파일이다. 각 설정은 새로운 라인에 위치하고, = 기호를 사용해 키와 값을 구분한다. 1-2. 특징 단순성: 구조가 매우 간단해서 작고 단순한 애플리케이션에 적합하다. 평면 구조: 계층적 구조를 지원하지 않아 복잡한 구성을 표현하기 ..
Spring Boot: 필터에서 doFilter와 FilterChain이란?
·
Spring 기초/Spring 기초 지식
이번 포스트에서는 Spring Filter에 대한 심화적인 이해를 해보도록 하자 📌 서론 Spring Framework에서 필터는 웹 애플리케이션의 요청과 응답을 조작하는 강력한 도구이다. 필터는 DispatcherServlet으로 가는 요청의 사전 처리와 후처리를 담당한다. 이를 통해 요청과 응답에 대한 중앙집중식 처리가 가능해진다. 필터는 doFilter() 메서드를 통해 요청을 가로채고, 필요한 로직을 실행한 뒤, 요청을 다음 목적지(다른 필터 또는 서블릿)로 전달한다. 지금부터 필터의 핵심 메서드인 doFilter에 대해 상세히 살펴보고, 실제 HTTP 요청 처리 예시를 통해 그 사용법을 알아보자 필터에 대한 자세한 내용은 아래의 포스트를 보고오자 Spring - Filter완전 정복: 웹 애플리..