개발

[React.js, 스프링부트, AWS로 배우는 웹 개발] 2장 - 서비스 레이어

jih0ssang 2024. 7. 22. 11:06

서비스 레이어는 컨트롤러와 퍼시스턴스 사이에서 비즈니스 로직을 수행하는 레이어이다.

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가 리턴됨을 확인할 수 있다.