DEV/Network
HTTPS 에 대해 알아보자
2025.05.25
HTTPS 에 대해 알아보기 전에 HTTP 가 무엇인지 살펴보겠습니다. HTTP 란Hyper Text Transfer Protocol 의 약자이다.HTTP 는 인터넷에서 하이퍼 텍스트를 교환하기 위한 통신 규약으로서, 80번 포트를 사용합니다. HTTP 는 어플리케이션 계층의 프로토콜이며, TCP/IP 위에서 동작합니다.(HTTP 3.0 은 UDP 에서 동작가능하다고 합니다.)특징으로는 Stateless (무상태성)을 유지하며, Method, Path, Version, Headers, Body 등으로 구성되어 있습니다. 하지만, HTTP 프로토콜은 데이터를 암호화하지 않고 평문(Plain Text)으로 전송하기 때문에, 비밀번호나 주민등록번호와 같은 개인정보가 네트워크 중간에서 쉽게 노출될 수 있는 위..
DEV/Spring
Spring Bean 등록 과정(3) (feat. 생성자 주입)
2025.05.04
1, 2 편을 읽지 않으셨다면 먼저 읽어보시길 추천드립니다.BeanFactory 부터 ApplicationContext 까지https://to-gatsby.tistory.com/19 Spring Bean 등록 과정(1) (feat. ApplicationContext)이전 글에서는 싱글톤의 구현방식과 구현시에 주의해야할 점에 대해 알아보았습니다.이번 글에서는 Spring 에서 싱글톤을 구현하는 빈의 생성 과정 및 설정에 대해 알아보겠습니다.스프링의 Beanto-gatsby.tistory.comgetBean 호출하면 ?https://to-gatsby.tistory.com/20 Spring Bean 등록 과정(2) (feat. AbstractBeanFactory)이전 글에서 Spring 의 BeanDefini..
DEV/Spring
Spring Bean 등록 과정(2) (feat. AbstractBeanFactory)
2025.04.13
이전 글에서 Spring 의 BeanDefinition 을 BeanDefinitionMap 에 저장하는 부분을 확인했습니다.이제는 실제 빈의 인스턴스 생성 과정을 알아보겠습니다. 실제 빈의 객체 생성은 beanFactory 의 getBean() 함수가 호출되며 실제 객체를 생성합니다.이때, 빈의 스코프에 따라서 다르게 동작하게 됩니다. BeanFactory 의 getBean 함수를 따라가 보겠습니다.public interface BeanFactory { /** * Return the bean instance that uniquely matches the given object type, if any. * This method goes into {@link ListableBeanFactory} by-t..
DEV/Spring
Spring Bean 등록 과정(1) (feat. ApplicationContext)
2025.04.06
이전 글에서는 싱글톤의 구현방식과 구현시에 주의해야할 점에 대해 알아보았습니다.이번 글에서는 Spring 에서 싱글톤을 구현하는 빈의 생성 과정 및 설정에 대해 알아보겠습니다.스프링의 Bean 관련한 내용은 한개의 포스팅으로 다루기엔 양이 많아서, 나누어서 포스팅을 해야할듯 합니다  Spring 에서는 빈의 생성과 설정을 제어하는 IoC (Inversion Of Control) 컨테이너인 BeanFactory 가 존재합니다. BeanFactory 는 IoC 컨테이너의 루트 인터페이스입니다.Spring 컨테이너중 가장 간단한 형태로, 빈을 생성하고, DI (Dependency Injection) 를 관리하는 역할을 합니다.public interface BeanFactory { String FACTORY_B..
DEV/디자인 패턴
싱글톤 패턴이 Stateless 해야 하는 이유
2025.03.09
싱글톤 패턴이란 클래스의 인스턴스를 한개만 생성하여, 해당 인스턴스에 대해서 전역 접근 지점을 제공하는 생성 디자인 패턴입니다.(해당 class 의 객체가 필요할 때, 매번 새로 만드는것이 아닌, 기존에 생성한 인스턴스를 가져와 활용합니다.)  구현 방식은 매우 간단합니다. 생성자를 private 키워드를 사용하여 외부에서의 직접적인 생성을 제한합니다. 또한, 팩토리 메소드를 통해 기존에 초기화된 객체가 있다면 해당 객체를 응답해주고,객체가 초기화 되기 전이라면, 인스턴스를 생성하여 반환 해줍니다.  코드로 작성해보겠습니다.fun main() { val a: SingleTon = SingleTon.getInstance() val b: SingleTon = SingleTon.getInstance..