본문 바로가기
코드프레소 체험단/Spring Boot를 활용합 웹 개발

[Spring Boot 웹 개발 입문] Spring Service, Spring Bean의 개념과 의존성 주입

by 의정부핵꿀밤 2022. 2. 6.
728x90

 

< Spring Service의 이해 >

 

Spring Service

Spring Service

  • 시스템의 핵심 비즈니스 로직을 구현하는 계층
  • 예시) SNS의 시스템의 경우
    • 이미지, 글 등의 컨텐츠 정보를 저장
    • 사용자가 선호할 만한 컨텐츠를 추천
    • 회원가입, 로그인, 회원 탈퇴 등의 회원 관련 처리
  • view의 종류와 database 종류에 영향을 받지 않는 독립적인 계층이다
    • 외부 기술의 영향을 받지 않도록 설계해야한다

 

 

 

Service의 구현

  • 클래스에 @Service Annotaion을 사용한다
  • 파라미터로 전달된 데이터들의 검증 작업을 수행한다
  • Repositroy 계층을 활용하여 database에 접근한다
    • Service 계층의 단일 메소드가 transaction의 단위가 된다
  • 애플리케이션의 세부 영역(User, Post, ..) 별로 클래스를 생성하여 구현한다
  • 인터페이스의 사용이 권장되나, 다형성을 활용한 기능 확장의 요구사항이 없는 경우 사용하지 않기도 한다

 

 

 

정리!

  • Service시스템의 핵심 비즈니스 로직을 구현하는 계층이다
  • view의 종류와 database 종류에 영향을 받지 않는 독립적인 계층이다
  • 클래스에 @Service Annotation 을 사용한다
  • 애플리케이션의 세부 영역별로 클래스를 생성하여 구현한다

 


< 스프링 빈과 의존성 주입 >

 

객체의 활용과 의존성

  • 의존성(Dependency)
    • 하나의 모듈(클래스, 패키지 등)이 다른 모듈을 사용하는 것이다
  • 일반적으로 다른 객체의 기능을 사용하기 위해서는 멤버 변수에 new로 객체를 생성하여 참조한다
  • 생성한 객체의 메소드를 호출하여 다른 객체의 메소드를 사용한다
  • 어떤 객체를 생성하여 사용할 것인지 코드 상에 명시한다
    • compile-time 의존성이 생성된다!

 

 

 

의존성 주입(DI, Dependency Injection)

  • 객체 생성을 외부에서 대신 수행한다
  • 활용할 객체에 대한 의존성(참조) 설정을 외부에서 대신 해준다
  • 활용할 클래스(인터페이스) 타입의 멤버 변수만 선언한 후 생성자를 구현한다
    • new 키워드로 객체 생성을 직접 하지 않는다!

 

 

 

Spring Framework가 객체의 생성과 관리 역할을 수행

  • Spring Framework가 특정 조건을 만나면 객체를 생성한다
    • 클래스 상단의 Annotation(@Controller, @RestController, @Service 등)
    • @Configuration 클래스의 @Bean Annotation
    • XML 설정
  • 객체로 생성할 대상을 검색하는 과정
    • Component Scan
  • 조건에 따라 객체들의 의존성을 관리한다

 

 

 

Spring IoC 컨테이너와 Spring Bean

  • Spring IoC 컨테이너
    • Spring Framework에서 객체의 생성과 관리의 역할을 하는 컴포넌트
  • Spring Bean
    • Spring IoC 컨테이너에 의해서 생성되어 관리되는 Java 객체

 

 

 

의존성 주입을 위한 단계

  1. Spring에 의해 객체가 생성되게끔 Annotation을 설정한다
  2. 사용할 객체를 멤버 변수와 생성자에 추가한다
  3. 객체를 사용한다

 

 

 

@Configuration과 @Bean Annotation

  • Java 클래스에 @Configuraton Annotation을 사용할 수 있다
  • 해당 클래스는 Spring Framework에 의해 설정 정보를 위한 클래스로 활용된다

 

  • @Configuration 클래스 내에 @Bean을 사용한 메소드로 Bean 생성이 가능하다
  • Bean으로 등록할 객체를 생성한 후 Retrun 한다

 

 

Spring Framework가 객체의 생성과 관리 역할 수행

  • Spring Framework가 특정 조건을 만나면 객체를 생성
    • 클래스 상단의 Annotation(@Controller, @RestController, @Service 등)
    • @Configuration 클래스의 @Bean Annotation
    • XML 설정
  • 객체로 생성할 대상을 검색하는 과정 -> Component Scan
  • 조건에 따라 객체들의 의존성을 관리

 

 

 

의존성 주입 정리

  1. Spring IoC 컨테이너(내부 컨테이너)에 Input으로 사용자가 작성한 소스코드가 주입된다
  2. 자바 소스코드와 함께 Spring Framework의 설정 정보들이 전달된다
  3. Spring IoC 컨테이너가 이를 통해 구성을 해서 Bean을 생성하고 의존성을 설정하게 된다

 

 

정리!

  • 의존성은 하나의 모듈(클래스, 패키지 등)이 다른 모듈을 사용할 때 만들어지며, new 키워드로 객체를 직접 생성한다
  • Spring Framework는 객체를 생성하고 객체 간의 의존성을 연결하는 역할을 대신 수행해준다 -> 의존성 주입
  • Spring IoC 컨테이너는 객체를 생성, 관리하는 역할을 하는 컴포넌트이다
  • Spring Bean은 Spring에 의해서 생성되고 관리되는 객체이다

 

728x90

댓글