2.2.5 서비스 레이어 : 비즈니스 로직
서비스 레이어는 컨트롤러와 퍼시스턴스 사이에 비즈니스 로직을 수행하는 역할을 한다.
서비스 레이어는 HTTP와 연관된 컨트롤러에서 분리돼 있고, 또 데이터 베이스와 연관된 퍼시스턴스와도 분리돼 있다. 따라서 서비스 레이어에서는 개발하고자 하는 로직에 집중할 수 있다.
@Service
public class TodoService {
public String testService() {
return "Test Serivce";
}
}
@Service 어노테이션은 스테레오타입 어노테이션이다. @Service 내부에 @Component 어노테이션을 갖고 있는데 @Component 어노테이션과 비교했을 때 특별한 기능 차이는 없다. 단지 이 클래스는 스프링 컴포넌트이며 기능적으로 비즈니스 로직을 수행하는 서비스 레이어임을 알려주는 어노테이션이다.
@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> resposne = ResponseDTO.<String>builder()
.data(list)
.build();
return ResponseEntity.ok().body(resposne);
}
}
여기에 한 가지 비밀은 @RestController 내부에 @Component 어노테이션을 포함하고 있다는 점이다. 따라서 @Service와 @RestController 모두 자바 빈으로 간주되며, 스프링이 이들을 관리한다.
스프링은 TodoController 객체를 생성할 때, TodoController 내부에 선언된 TodoService에 @Autowired 어노테이션이 붙어 있는지 확인한다. @Autowired는 스프링이 해당 빈을 찾아서 이 멤버 변수에 자동으로 연결하라는 뜻이다. 따라서 TodoController를 초기화할 때, 스프링은 TodoService를 자동으로 초기화하거나 검색해 TodoController에 주입해준다.
'React.js, 스프링 부트, AWS로 배우는 웹 개발 101' 카테고리의 다른 글
[TIL] 25/01/29, 퍼시스턴스 레이어 : 스프링 데이터 JPA (0) | 2025.01.29 |
---|---|
[TIL] 25/01/27, REST API (0) | 2025.01.28 |
[TIL] 25/01/26, 백엔드 서비스 아키텍처 (0) | 2025.01.26 |
[TIL] 25/01/25, build.gradle 속성 (0) | 2025.01.25 |
[TIL] 25/01/21, 웹 서버 기술 (0) | 2025.01.21 |