Spring Boot 기초 지식

전상현·2022년 12월 10일

Spring

목록 보기
4/6

1. 작동원리

  • Spring은 자바 객체와 라이브러리들을 관리해주며, 톰캣과 같은 WAS가 내장되어 있어 자바 웹 어플리케이션을 구동할 수 있습니다.

  • Spring은 경량 컨테이너로 자바 객체를 직접 Spring 안에서 관리합니다.

  • 객체의 생성 및 소멸과 같은 생명 주기(Life cycle)을 관리하며, Spring 컨테이너에서 필요한 객체를 가져와 사용합니다.

  • JSP와 같이 MVC2 패턴을 사용하기는 하지만,

    • JSP와 Spring의 차이는
      JSP는 웹 페이지 영역에서 사용되고, Spring은 웹 서비스 전반적 환경을 구성합니다.

    • Spring이 나라라고 한다면, JSP는 도시 입니다. 스프링은 프로그램 전반적인 근본이 되는 환경을 구축하고있고, JSP는 그 환경의 일부분에 사용되는 언어입니다.

  • Spring의 가장 큰 특징으로 IOC와 DI가 많이 언급됩니다. IOC와 DI의 간단한 개념은 아래와 같습니다.


2. IOC, DI이란

2-1. 제어역전(IoC, Inversion of Control)

  • 개발자가 프레임워의 기능을 호출하는 형태가 아니라 프레임워크가 개발자의
    코드를 호출하기 때문에, 개발자는 전체를 직접 구현하지 않고 자신의 코드를
    부분적으로 "끼워넣기"하는 형태로 구현할 수 있다.

  • 프레임워크가 객체의 생성, 소멸과 같은 라이프 사이클을 관리하며 스프링으로부터
    필요한 객체를 얻어올 수 있다.

  • 객체의 의존성을 역전시켜 객체 간의 결합도를 줄이고 유연한 코드를 작성할 수
    있게 하여 가독성 및 코드 중복, 유지 보수를 편하게 할 수 있게 한다.

2-2. 의존성 주입(DI: Dependency Injection)

  • 객체간의 의존성이 존재할 경우 개발자가 직접 객체를 생성하거나 제어하는 것이 아니라,
    제어반전에 의하여 특정 객체에 필요한 다른 객체를 프레임워크가 자동으로 연결시켜주는
    것을 말한다.

  • 개발자는 자신에게 필요한 객체를 직접 할당하지 않고, 인터페이스를 통해 선언한
    객체에 스프링 프레임워크에 의해 주입받아 사용할 수 있기 때문에 비지니스 로직에만
    집중할 수 있다.

  • 개발자는 객체를 선언만 할 뿐, 할당은 프레임워크에서 자동으로 이루어진다.


3. Spring Container 란?

  • 스프링 컨테이너는 자바 객체의 생명 주기를 관리하며, 생성된 자바 객체들에게
    추가적인 기능을 제공하는 역할을 합니다. 여기서 말하는 자바 객체를 스프링에서는
    빈(Bean)이라고 부릅니다.

  • 개발자는 객체를 생성하고 소멸할 수 있는데, 스프링 컨테이너가 이 역할을 대신해 준다.
    즉, 제어의 흐름을 외부에서 관리하는 것. 또한, 객체들 간의 의존관계를 스프링
    컨테이너가 런타임 과정에서 알아서 만들어 준다.

  • 스프링은 실행시 객체들을 담고있는 Container가 있다.

  • 스프링은 스프링 컨테이너에 스프링 빈(객체)을 등록할 때, 기본으로 싱글톤으로 등록한다.


4. Spring Bean을 Spring IoC Container에 등록하는 방법?

4-1. 자바 어노테이션(Java Annotation)을 사용하는 방법

  • JAVA에서 Annotation 이라는 기능이 있습니다. 사전상으로는 주석의 의미이지만 Java 에서는 주석 이상의 기능을 가지고 있습니다.

  • Annotation은 자바 소스 코드에 추가하여 사용할 수 있는 메타데이터의 일종입니다. 소스코드에 추가하면 단순 주석의 기능을 하는 것이 아니라 특별한 기능을 사용할 수 있습니다.

  • 실제 Spring 프로젝트에서 Controller를 등록할 때에는 아래와 같은 Annotation을 사용합니다. 아래의 예시에서 Controller 임을 Spring 에게 알려주기 위하여 @ControllerAnnotation을 사용했습니다.

4-2. Bean Configuration File에 직접 Bean 등록하는 방법

  • @Configuration과 @Bean Annotation 을 이용하여 Bean을 등록할 수 있습니다.

  • @Configuration을 이용하면 Spring Project 에서의 Configuration 역할을 하는 Class를 지정할 수 있습니다.

  • 해당 File 하위에 Bean 으로 등록하고자 하는 Class에 @Bean Annotation을 사용해주면 간단하게 Bean을 등록할 수 있습니다.

// Hello.java
@Configuration
public class HelloConfiguration {
    @Bean
    public HelloController sampleController() {
        return new SampleController;
    }
}

profile
경험을 겪고 성장하는 개발자입니다.

0개의 댓글