서비스 레이어는 컨트롤러와 퍼시스턴스 사이에서 비즈니스 로직을 수행하는 레이어이다.
HTTP 요청/응답을 관할하는 컨트롤러와 데이터베이스와 연결된 퍼시스턴스와 분리되어 우리가 개발하는 로직에 집중할 수 있다.
[TodoService.java]
package com.example.demo.service;
import org.springframework.stereotype.Service;
@Service
public class TodoService {
public String testService() {
return "Test Service";
}
}
- @Service 는 비즈니스 로직을 수행하는 서비스 레이어임을 알려주는 어노테이션
[TodoController에서 TodoService 사용]
import org.springframework.beans.factory.annotation.Autowired;
@RestController
@RequestMapping("todo")
public class TodoController {
@Autowired
private TodoService service;
@GetMapping("/test")
public ResponseEntity<?> testTodo() {
String str = service.testService();
List<String> list = new ArrayList<>();
list.add(str);
ResponseDTO<String> response = ResponseDTO.<String>builder().data(list).build();
return ResponseEntity.ok().body(response);
}
}
- TodoController 오브젝트를 생성할 때 TodoController 내부에 선언된 TodoService에 @AutoWired 어노테이션을 확인한다.
- @Autowired가 알아서 TodoService(빈)를 찾은 다음 그 빈을 이 인스턴스 멤버 변수에 연결한다.
- 그러므로 TodoController를 초기화할 때, 스프링은 알아서 TodoService를 초기화 또는 검색해 TodoController에 주입해준다.
- 별도로 import를 써서 TodoService를 참조시킬 필요가 없다 !!
{
"error": null,
"data": [
"Test Service"
]
}
GET localhost:8080/todo/test 요청을 보냈을 때, "Test Service"를 담은 ResponseDTO가 리턴됨을 확인할 수 있다.
'개발' 카테고리의 다른 글
[React.js, 스프링부트, AWS로 배우는 웹 개발] 3장 - 리액트 애플리케이션 생성 (0) | 2024.07.23 |
---|---|
[React.js, 스프링부트, AWS로 배우는 웹 개발] 2장 - 퍼시스턴스 레이어 (0) | 2024.07.22 |
[React.js, 스프링부트, AWS로 배우는 웹 개발] 2장 - 컨트롤러 레이어 (0) | 2024.07.21 |
[React.js, 스프링부트, AWS로 배우는 웹 개발] 2장 - 레이어드 아키텍처 패턴, REST API 스타일 (0) | 2024.07.20 |
[React.js, 스프링부트, AWS로 배우는 웹 개발] 2장 - 스프링부트 실행 (0) | 2024.07.20 |