[Spring] 주요개념 정리

한호성·2022년 7월 31일
0

글의 목적

스프링에서 중요한 개념으로 나오는 Bean, DI(의존성 주입), IOC(제어의 역전) 에 대해 간단히 개념 정리하고 추후에, spring 개발을 진행하고 찾아보면서 공부를 진행하도록 하자.

디자인 패턴 -Singleton

  • 싱클턴이란 어플리케이션이 시작될 때, 어떤 클래스가 최초 한번만 메모리를 할당하여 그 메모리에 인스턴스를 만들어 사용하는 디자인 패턴이다. 장점으로, 고정된 하나의 메모리를 사용하기 때문에 메모리의 낭비를 줄일 수 있다.( 한 개의 클래스 - > 한 개의 인스턴스)
예전에 가볍게 찾아봤던 디자인 패턴 책에서 싱클턴 패턴이란느 것을 본적이 있고, spring을 개발하면서 
이게 싱글턴 패턴인가? 생각하면서 만들었는데, 
실제로 spring의 개념에 많이 포함되어 있는 디자인패턴이라는 것을 알게 되었고, 디자인 패턴을 
프레임워크에서 사용하는 것을 처음 본 것 같다. 
사실 프레임워크를 제대로 공부해본 적이 없어서.. 눈치 채지 못했던 것 같다.

Bean

  • 위의 싱글턴 개념이 적극적으로 사용된 개념, Bean이라고 불리는 객체가 어플리케이션에 하나만 존재한다.

  • Spring Ioc 컨테이너에 의해 관리되는 객체(생명주기 관리)들이다.

  • @Annotation을 통해 간단하게 bean 등록이 가능하다.

Bean vs Component

IoC

위의 생성된 Bean들이 모여있는 곳(?)이라고 생각해도 될거 같다. 개발자가 작성한 프로그램이 재사용 라이브러리의 흐름 제어를 받게 된다는 말이다
.(사실 이해가 잘 안가지만, 아마도.. 미리 만들어든 틀을 내 입맛에 맞게 사용한다..? 라는거 같다. 아니면 외부에서 만들어둔 객체에 의해서 프로그램이 진행된다는 말인거 같기도 하다.)

제어의 기본 흐름
1. 객체 생성
2. 의존성 객체 생성, 클래스 내부에서 생성
3. 의존성 객체 메소드 호출

그에 비해 스프링에서는 다음과 같은 순서로 객체가 만들어진다.

1. 객체 생성
2. 의존성 객체 주입.
-> 스스로 만드는 것이 아니라 제어권을 스프링에게 위임하여, 스프링이 만들어놓은 객체를 주입한다. 
(이런것들 때문에 interface를 내가 직접 구현하지 않아도 사용이 가능했던 것이구나!
얼핏 이런 느낌이겠거니 느끼고 있었는데. 조금 더 자세히 알아볼 필요가 있겠다.)

3. 의존성 객체 메소드 호출

제어의 흐름을 사용자가 컨트롤 하는 것이 아니라 스프링에게 맡겨 작업을 처리하게 된다.


DI

Ioc와 비슷한 개념이다. DI란 상위 모듈에 의존하는 모듈의 생성자,프로퍼티 메서드를 통해 주입하는 것을 DI라고 부르고 있다.

  • Di를 통해서 모듈 간의 결합도가 낮아지고 유연성이 높아지는 특징이 있다.

Reference

https://velog.io/@gillog/Spring-DIDependency-Injection
https://ooeunz.tistory.com/82

profile
개발자 지망생입니다.

0개의 댓글