Spring Boot 의존 주입방법

배세훈·2021년 9월 6일
0

Spring

목록 보기
20/38

두 프레임워크 등장 이유

1. Spring Framework

  • Spring Framework를 이용해서 엔터프라이즈 애플리케이션을 보다 쉽게 만들 수 있다. (DI, AOP 등..)
    -> 개발자들이 애플리케이션을 조금 더 쉽게 구현할 수 있도록 도와주는 것

해결하고자 하는것
a) Dependency Injection(DI) - 의존성 주입
- 객체 간 결합을 느슨하게 만듦
- 코드 재사용성 증가 및 단위테스트가 용이
b) 중복된 코드 제거
- ex) JDBC template
- 비즈니스 로직에만 집중 가능
c) 다른 프레임워크와의 통합
- ex) JUnit & Mockito for Unit Testing
- 여러 훌륭하게 제공되는 프레임워크를 통해 해결하고자 하는 문제를 높은 품질로 해결

2. Spring Boot

  • Spring Framework는 기능이 많은만큼 환경설정이 복잡한 편이다. 이에 어려움을 느끼는 사용자들을 위해 나온 것이 바로 Spring Boot이다. Spring Boot는 Spring을 사용하기 위한 설정의 많은 부분을 자동화하여 사용자가 편하게 Spring을 활용 할 수 있도록 돕는다.
    -> 스프링 프레임워크를 더 쉽게 사용할 수 있도록 도와주는 것

해결하고자 하는 것
a) Auto Configuration 자동 실행
b) 쉬운 의존성 관리
c) 내장 서버

기능적 측면에서 두 프레임워크의 차이점

1. Spring

  • POJO 기반의 Enterprise Application 개발을 쉽고 편하게 할 수 있도록 한다.
  • Java Application을 개발하는데 필요한 하부구조(Infrastructure)를 포괄적으로 제공한다.
  • Spring이 하부구조를 처리하기 때문에 개발자는 Application 개발에 집중할 수 있다
  • 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공한다.

2. Spring Boot

  • 스프링부트는 빠른시간에 애플리케이션이 제품이 될 수 있도록 하는 것을 목표로 한다.
  • Actuator: 애플리케이션을 고수준에서 모니터링하고 추적 할 수 있도록 해준다.
  • Embedded Server Integrations: 서버가 애플리케이션에 통합되기 때문에 우리는 서버에 설치되는 별도의 애플리케이션 서버를 가질 필요가 없다.
  • Default Error Handling

스프링 부트 starter dependency만 추가해주면 바로 API를 정의하고 내장된 톰캣이나 제티로 웹 애플리케이션 서버를 실행할 수 있다. 실행환경이나 의존성 관리 등의 인프라 관련 등은 신경쓸 필요 없이 바로 코딩을 시작하면 된다.

Spring Boot Starter 프로젝트 옵션들

  • spring-boot-starter-web-services: SOAP Web Services
  • spring-boot-starter-web: Web and RESTful applications
  • spring-boot-starter-test: Unit testing and Integration Testing
  • spring-boot-starter-jdbc: Traditional JDBC
  • spring-boot-starter-hateoas: Add HATEOAS features to your services
  • spring-boot-starter-security: Authentication and Authorization using Spring Security
  • spring-boot-starter-data-jpa: Spring Data JPA with Hibernate
  • spring-boot-starter-cache: Enabling Spring Framework's caching support
  • spring-boot-starter-data-rest: Expose Simple REST Services using Spring Data REST

Spring Boot의 다른 목표

  • spring-boot-starter-actuator: 여러분의 애플리케이션 추적하거나 모니터링하는 등의 기능을 사용할 수 있도록 한다.
  • spring-boot-starter-undertow, spring-boot-starter-jetty, spring-boot-starter-tomcat: 내장된 서블릿 컨테이너를 선택할 수 있도록 해준다.
  • spring-boot-starter-logging: logback 을 사용해서 로깅할 수 있도록 해준다.
  • spring-boot-starter-log4j2: Log4j2를 사용해서 로깅할 수 있도록 해준다.

Spring vs Spring Boot의 의존주입 차이

1) Spring

  • bean configuration xml을 이용한 의존 주입
  • 자바 코드를 이용한 의존 주입
  • 어노테이션을 이용한 의존 주입

2) Spring Boot

  • 자바 코드를 이용한 의존 주입
  • 어노테이션을 이용한 의존 주입

@SpringBootApplication: 아래와 같은 기능을 동시에 실행
1) @Configuration
- 자바 코드로 작성된 클래스를 스프링 설정으로 사용함을 의미
2) @EnableAutoConfiguration
- Spring Application Context를 만들 때 지정해 둔 설정 값들을 이용하여 자동으로 설정하는 기능을 킴
3) @ComponentScan
- 지정한 위치 이하에 있는 @Component와 @Configuration이 붙은 클래스를 스캔해서 Bean으로 등록

Bean, BeanFactory, ApplicationContext
1) Bean
- Spring이 IoC 방식으로 관리하는 객체 or Spring이 직접 생성과 제어를 담당하는 객체
2) BeanFactory
- Spring의 IoC를 담당하는 핵심 컨테이너를 가리킴
- Bean을 등록, 생성, 조회, 반환하는 기능을 담당
- 이 BeanFactory를 바로 사용하지 않고 이를 확장한 ApplicationContext를 주로 이용
3) ApplicationContext
- BeanFactory를 확장한 IoC 컨테이너
- BeanFactory와 다른 것은 Spring이 제공하는 각종 부가 서비스를 추가로 제공

profile
성장형 인간

0개의 댓글