Deep Dive/BACK

Spring Core

MoonJay 2022. 10. 9. 15:50
Spring Framework란?

프레임 워크 모듈

- 스프링 프레임워크는 약 20개의 모듈로 구성되어 있다.

- 필요한 모듈만 가져다 사용할 수 있다.

 

 

 

컨테이너

- 컨테이너는 인스턴스의 생명주기를 관리한다.

- 생성된 인스턴스들에게 추가적인 기능을 제공한다.

 

IoC

컨테이너가 코드 대신 오브젝트의 제어권을 갖고 있어 IoC(제어의 역전)이라 합니다.

예를 들어, 서블릿 클래스는 개발자가 만들지만, 그 서블릿의 메소드를 알맞게 호출하는 것은 WAS입니다.

이렇게 개발자가 만든 어떤 클래스나 메소드를 다른 프로그램이 대신실행해주는 것을 제어의 역전

 

DI(Dependency Injection)

DI는 의존성 주입이란 뜻을 가지고 있으며, 클래스 사이의 의존 관계를 빈(Bean)설정 정보를 바탕으로 컨테이너가

자동으로 연결해주는 것

 

 

 

 

Java config를 이용한 설정을 위한 어노테이션

@Configuration

- 스프링 설정 클래스를 선언하는 어노테이션

 

@Bean

- bean을 정의하는 어노테이션

 

@ComponentScan

- @Controller, @Service, @Repository, @Component 어노테이션이 붙은 클래스를 찾아 컨테이너에 등록

 

@Component

- 컴포넌트 스캔의 대상이 되는 어노테이션 중 하나로서 주로 유틸, 기타 지원 클래스에 붙이는 어노테이션

 

@Autowired

- 주입대상이 되는 bean을 컨테이너에 찾아 주입하는 어노테이션

 

ApplicationContext중에서 AnnotationConfigApplicationContext는 JavaConfig클래스를 읽어들여 IoC와

DI를 적용하게 된다.

 

설정 파일중에 @Bean이 붙어 있는 메소드들을 AnnotationConfigApplicationContext는 자동으로 실행하여

그 결과로 리턴하는 객체들을 기본적으로 싱글턴으로 관리 하게 된다.

 

 

 

 

기존 JavaConfig에서 빈을 생성하는 메소드를 모두 제거했다.

단, @Configuration 아래에 @ComponentScan이라는 어노테이션을 추가했습니다.

@ComponentScan 어노테이션은 파라미터로 들어온 패키지 이하에서 @Controller,Service,Repository,Component 

어노테이션이 붙어 있는 클래스를 찾아 몽땅 메모리에 올려준다.

 

카 클래스와 엔진 클래스에 @Component라는 어노테이션을 달아준다.

 

 

Spring에서 사용하기에 알맞게 어노테이션이 붙어있는 객체들은 ComponentScan을 이용해서 읽어들여

메모리에 올리고 DI를 주입하고, 이러한 어노테이션이 붙어 있지 않은 객체는 @Bean 어노테이션을 이용하여

직접 생성하는 방식으로 클래스를 관리하면 편하다.