본문 바로가기

Back-end/Spring 개념17

8. Bean 자동 등록 0. 개요 - 이전 포스팅에서 AppConfig 설정 파일을 이용하여 객체를 Spring Container에 Bean을 등록시키는 방법을 배웠다. - 이처럼 AppConfig 파일을 사용하여 직접 Spring Bean을 명시하는 방법을 Bean 수동 등록이라고 한다. - 실무에서는 수십, 수백 개의 Bean을 구성하여 프로젝트를 만든다. - 그러므로 수 많은 Bean을 AppConfig에 일일이 작성하고 관리하는 것은 비효율적이다. - 수 백줄의 AppConfig 파일에서 Bean의 역할과 의존관계를 개발자가 한번에 이해하고 수정하기 어렵기 때문이다. - 그래서 현업에서는 AppConfig보다 Spring에서 제공하는 Bean 자동 등록 기능을 중점적으로 사용한다. 1. Bean 자동 등록 - AppCo.. 2022. 2. 7.
7. Singleton Container 0. 개요 - Spring Container의 다른 이름이 Singleton Container이다. - Spring Container가 Bean을 Singleton 방식으로 관리하기 때문에 붙여진 이름이다. - 이번 포스팅에서는 Singleton Container에 대해서 알아보도록 하자. 1. Spring이 Singleton을 사용하는 이유 - Spring 프레임 워크는 기업용 웹 서비스를 지원하기 위해 등장한 기술이다. - 기업용 웹 서비스는 다수의 사용자가 동시적으로 서버에게 요청을 보낸다. - 이러한 다수의 동시 요청을 오류 없이 처리하기 위해 Singleton 방식을 사용한다. a) 다수의 요청을 처리하는 방법 - 고객의 요청마다 객체를 새롭게 생성한다고 가정해보자. - 서비스 트래픽이 초당 1.. 2022. 2. 2.
6. Spring Container의 다형성 0. 개요 - ApplicationContext(= Spring Contianer)는 다양한 형태로 구현이 가능하다. - 이는 ApplicationContext(= Spring Contianer)가 인터페이스이기 때문이다. - 이번 포스팅에서는 ApplicationContext의 다형성에 대해서 알아보자. 1. BeanFactory - BeanFactory는 ApplicationContext의 상위 개념이다. - ApplicationContext는 인터페이스고, BeanFactory라는 인터페이스를 상속받는다. - 그렇다면 BeanFactory는 무엇일까? a) Spring Container의 최상위 개념 - BeanFactory는 Spring Container의 최상위 개념이다. - BeanFacotr.. 2022. 2. 1.
5. Spring Container 0. 복습 - 이전 포스팅에서 Spring을 사용해야 하는 이유에 대해서 알아보았다. - java만으로 객체지향 프로그래밍의 원칙(SOLID)을 온전히 구현할 수 없기에 AppConfig 설정 파일을 사용하여 구현체 간의 의존관계를 설정하고, 이 의존관계를 외부에서 주입(DI)하는 방식을 사용했다. - 그로 인해 프로그램의 전체적인 흐름이 프로그램 내부에 의해 결정되는 것이 아닌, 외부의 설정 파일(AppConfig)에 의해 결정되는 IoC의 특징에 대해 알 수 있었다. - 그렇다면 Spring에서 SOLID, DI, IoC, AppConfig 등의 개념을 어떻게 사용하는지 알아보자. 1. Spring Container - AppConfig의 역할(구현체의 생성, 관리 그리고 의존관계 형성)을 하는 대상.. 2022. 1. 31.
4. Spring을 사용하는 이유 0. 개요 - 이전 포스팅에서 좋은 객체지향 프로그래밍을 위한 SOLID 원칙을 배웠다. - 이제 SOLID만 따른다면, Java를 사용해 온전한 객체지향 프로그래밍을 구현할 수 있을까? 1. Java는 SOLID 원칙을 지킬 수 없다. - Java만을 이용해서 SOLID 원칙을 구현하는 것에는 문제가 있다. - 무엇이 문제인지 알아보자. a) OCP와 DIP원칙의 위배 - Java만을 이용하여 객체지향 프로그래밍을 만들다 보면 OCP와 DIP원칙을 위반하게 된다. - 간단한 예제를 살펴보자. public class ServiceImpl implements Service { private final Repository repository = new MemoryRepository(); } - 위의 예시에서.. 2022. 1. 27.
3. SOLID 원칙 1. 좋은 객체지향 프로그램을 만드는 방법 - 이전 포스팅에서 좋은 객체지향이란 다형성을 잘 유지하며 개발하는 것이라고 했다. - 단순하게 역할과 구현을 분리하면 되는것 아닌가? 생각할 수 있다. - 그러나 프로그램의 사이즈가 커질수록, 코드가 서로 얽히면서 객체지향을 유지하기 어려워진다. - 이처럼, 큰 규모의 프로그램에서도 좋은 객체지향 프로그래밍을 할 수 있도록 제시된 규칙이 있다. 2. SOLID 원칙 a) 개요 - 클린 코드의 저자인 Robert Martin이 정리한 좋은 객체지향 프로그래밍의 5가지 원칙 - SOLID는 다섯가지 원칙의 앞글자를 따서 만들어진 이름이다.(SRP, OCP, LSP, ISP, DIP) b) SRP(Single Responsibility Principle, 단일 책임.. 2022. 1. 26.
2. 다형성(Polymorphism)과 객체지향 프로그래밍(OOP) 0. 결론 - Spring과 객체지향 프로그래밍의 핵심은 다형성에 있다. - 다형성을 객체지향 프로그래밍의 특성 중 하나라고 말하지만, 다형성으로 인해 객체지향 프로그래밍의 개념이 완성된다. - 그렇다면 다형성이 무엇인지, 왜 객체지향의 핵심인지 알아보자. 1. 객체지향 프로그래밍(OOP)이란? - 객체지향 프로그래밍이란, → 독립적인 단위(객체)가 협력하여 데이터를 처리하는 프로그램 구조를 갖는 것 → 독립적인 단위(객체) 간의 관계가 유연하여 부품을 교체하듯, 프로그램의 구조변경이 쉬운 것 - 즉, 자동차를 만드는 것처럼 프로그램(App)을 만드는 것이다. - 자동차는 수많은 부품의 조합으로 이루어진 결과물이다. - 이처럼 코드를 역할에 따라 분리하고, 하나의 부품으로써 조합하여 App이라는 결과물로.. 2022. 1. 24.
1. Maven과 Gradle이란? 1. Spring 프로젝트 만들기 - 이전에는 하나부터 열까지 Spring 환경을 직접 설정했다. - 하지만, 환경설정이 자동화되어 있는 Spring Boot를 사용하면서 프로젝트 또한 자동화를 거쳐 생성한다. - 그 방법이 아래의 사이트를 사용하여 Spring 프로젝트를 만드는 것이다. https://start.spring.io/ a) Maven & Gradle - 프로젝트 생성을 시작하면, 맨 처음에 Maven과 Gradle을 선택하게 된다. 이들은 무엇일까? - Maven과 Gradle 모두 자바 프로젝트에서 사용되는 빌드 자동화 및 관리 시스템이다. a-1) Maven의 특징 - Maven은 XML을 기반으로 한 빌드 자동화 시스템이다. - Maven은 사용하는 라이브러리와 해당 라이브러리와 연관.. 2022. 1. 23.