728x90
< 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 객체
의존성 주입을 위한 단계
- Spring에 의해 객체가 생성되게끔 Annotation을 설정한다
- 사용할 객체를 멤버 변수와 생성자에 추가한다
- 객체를 사용한다
@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
- 조건에 따라 객체들의 의존성을 관리
의존성 주입 정리
- Spring IoC 컨테이너(내부 컨테이너)에 Input으로 사용자가 작성한 소스코드가 주입된다
- 자바 소스코드와 함께 Spring Framework의 설정 정보들이 전달된다
- Spring IoC 컨테이너가 이를 통해 구성을 해서 Bean을 생성하고 의존성을 설정하게 된다
정리!
- 의존성은 하나의 모듈(클래스, 패키지 등)이 다른 모듈을 사용할 때 만들어지며, new 키워드로 객체를 직접 생성한다
- Spring Framework는 객체를 생성하고 객체 간의 의존성을 연결하는 역할을 대신 수행해준다 -> 의존성 주입
- Spring IoC 컨테이너는 객체를 생성, 관리하는 역할을 하는 컴포넌트이다
- Spring Bean은 Spring에 의해서 생성되고 관리되는 객체이다
728x90
'코드프레소 체험단 > Spring Boot를 활용합 웹 개발' 카테고리의 다른 글
[Spring Boot 웹 개발 초급] MyBatis 활용 준비 (0) | 2022.06.26 |
---|---|
[Spring Boot 웹 개발 초급] 커리큘럼 및 Data Access Layer의 개념 (0) | 2022.03.02 |
[Spring Boot 웹 개발 입문] HTTP 메소드와 Request Body, REST API 문서 (0) | 2022.02.03 |
[Spring Boot 웹 개발 입문] Response 데이터와 JSON 포맷 (0) | 2022.02.03 |
[Spring Boot 웹 개발 입문] Request 파라미터의 이해 (0) | 2022.02.03 |
댓글