본문 바로가기

Backend47

[Spring] SOLID와 스프링 목차 서론 SOLID의 원칙과 스프링을 연관지어 알아봅시다. 클린 코드로 유명한 로버트 마틴의 좋은 객체 지향 설계의 5가지 원칙 (SOLID) SRP: 단일 책임 원칙 (Single Responsibility Principle) OCP: 개방-폐쇄 원칙(Open/Closed Principle) LSP: 리스코프 치환 원칙(Liskov Substitution Principle) ISP: 인터페이스 분리 원칙(Interface Segregation Principle) DIP: 의존관계 역전 원칙(Dependency Inversion Principle) SRP 단일 책임 원칙 Single Responsibility principle 한 클래스는 하나의 책임만 가져야 한다는 원칙입니다. 하지만, 하나의 책임이.. 2023. 7. 20.
[Spring] 스프링은 왜 만들었나요? 스프링과 객체지향 목차 서론 스프링 기술을 왜 만들었고, 이 기술의 핵심 컨셉이 무엇인지 알아봅시다. 스프링의 핵심 개념 및 컨셉? 사람들이 흔히들 하는 오해는 다음과 같습니다. 웹 애플리케이션을 만들고, DB 접근을 편리하게 해주는 기술이다. 전자 정부 프레임워크이다. 웹 서버를 자동으로 띄워주는 기술이다. 클라우드, 마이크로서비스를 위한 기술이다. 스프링의 진짜 핵심 스프링은 자바 언어 기반의 프레임워크 자바 언어의 가장 큰 특징은 객체 지향 언어이다. 스프링은 객체 지향 언어가 가진 강력한 특징을 살려내는 프레임워크이다. 스프링은 좋은 개체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크이다. 여기서의 핵심은 스프링은 좋은 객체 지향 프로그래밍을 위한 프레임워크입니다. 좋은 객체 지향 프로그래밍은 무엇일까요?.. 2023. 7. 20.
[SpringBoot] 웹 스코프 (Request 스코프) 목차 서론 이전에 싱글톤, 프로토타입 스코프, Provider 과 관련된 글을 작성했습니다. 이번엔 웹 스코프에 대해 작성하겠습니다. 빈의 종류 종류 설명 싱글톤 기본 스코프. 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프이다. 프로토타입 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프이다. 웹 관련 request 웹 요청이 들어오고 나갈 때까지 유지되는 스코프이다. session 웹 세션이 생성되고 종료될 때까지 유지되는 스코프이다. application 웹의 서블릿 컨텍스트와 같은 범위로 유지되는 스코프이다. 웹 스코프의 특징 웹 스코프는 웹 환경에서만 동작합니다. 웹 스코프는 프로토타입과 다르게 스프링이 해당 스.. 2023. 7. 10.
[SpringBoot] DL (ObjectProvider, JSR-330 Provider) 목차 서론 전에 작성했던 글에서 싱글톤 빈과 프로토타입 스코프 빈을 함께 썼을 때, 프로토타입 빈이 제대로 동작하지 않는 문제점에 관해 작성했습니다. 이에 대한 해결책으로 싱글톤 빈이 프로토타입을 주입받는 대신 스프링 컨테이너 전체를 주입받아 해결했는데, 이 방법 또한 스프링 컨테이너에 종속적인 코드가 되고 단위테스트가 어려워진다는 문제점이 있습니다. 오늘 작성할 ObjectProvider와 JSR-330 Provider를 통해 이 문제를 해결할 수 있습니다. 지정한 프로토타입을 필요한 시점에 스프링 컨테이너에서 대신 찾아주는, 즉, 의존관계를 주입받는게 아니라 직접 찾아 쓰는 의존관계 탐색 (DL, Dependency Lookup)의 기능을 수행하는 역할을 합니다. (아래의 예제는 전에 작성한 글의 예.. 2023. 7. 10.
[SpringBoot] 빈 스코프 (싱글톤과 프로토타입 스코프) 목차 빈 스코프란? 기본적인 스프링 빈은 싱글톤 스코프로 생성이 됩니다. 싱글톤 스코프란, 스프링 컨테이너의 시작과 함께 생성되어 스프링 컨테이너가 종료될 때까지 유지되는 빈입니다. 스코프는 번역 그대로 빈이 존재할 수 있는 범위를 뜻합니다. 스프링은 다음과 같은 다양한 스코프를 지원합니다. 빈의 종류 종류 설명 싱글톤 기본 스코프. 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프이다. 프로토타입 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프이다. 웹 관련 request 웹 요청이 들어오고 나갈 때까지 유지되는 스코프이다. session 웹 세션이 생성되고 종료될 때까지 유지되는 스코프이다. application 웹의.. 2023. 7. 9.
[SpringBoot] 초기화 및 소멸전 콜백 메서드 목차 서론 애플리케이션 시작 시점에 필요한 연결을 미리 해두고 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행해야하는 경우가 있습니다. ex) 데이터베이스 커넥션 풀 또는 네트워크 소켓 이를 초기화 작업, 종료 작업이라고 합니다. 이러한 작업은 객체 생성자가 아니라 다른 메서드에서 진행되어야 합니다. 스프링은 해당 작업을 수행하는 별도의 메서드를 제공합니다. 참고 데이터베이스 커넥션 풀 애플리케이션 서버가 올라올 때 데이터베이스와 미리 연결을 맺어놓습니다. 이유는 TCP/IP Handshake를 하는데 오래 걸리기 때문에 약 10개~많으면 100개까지 미리 잡아놓습니다. 고객 요청이 들어올 때 연결해 놓은 것을 재활용하여 사용합니다. 문제 상황 서버가 뜰 때 외부 네트워크에 미리 연결하는 객체.. 2023. 7. 2.