-
7. Spring Boot : @Service와 @Controller개발/Spring Boot 2024. 7. 30. 17:21
* 본 글은 벡엔드 부트캠프를 진행하며 작성했습니다.@Service
서비스 계층을 정의할 때 사용되는 어노테이션이다. 서비스 계층은 비즈니스 로직을 구현하고, 데이터베이스와의 상호작용을 관리하며, 애플리케이션의 핵심 비즈니스 기능을 처리하는 역할을 한다.
@Service public class UserService { @Autowired private UserRepository userRepository; public User getUserById(Long id) { return userRepository.findById(id).orElseThrow(() -> new UserNotFoundException(id)); } // 기타 비즈니스 로직 메서드 }
비즈니스 로직을 처리하는 것 뿐만 아니라 Repository와의 상호작용에도 Service가 사용된다. 이 작업은 컨트롤러에서도 직접 구현이 가능하지만 기능 분리로 인한 이점(재사용성과 유지보수성)이 있기 때문에 서비스를 따로 정의한다.
@Controller
웹 요청을 처리하고, 사용자 인터페이스에 대한 응답을 반환하는 역할을 하는 클래스에 사용된다. @RequestMapping, @GetMapping, @PostMapping 등의 어노테이션을 통해 URL과 매핑되며, 각각의 기능에 따라 HTTP 요청을 처리한다.
@Controller public class UserController { @Autowired private UserService userService; @GetMapping("/user/{id}") public String getUser(@PathVariable Long id, Model model) { User user = userService.getUserById(id); model.addAttribute("user", user); return "user_detail"; // 뷰 이름 } // 기타 요청 처리 메서드 }
주로 사용자 요청을 받고 처리하는데 사용된다.
@Service와 @Controller는 각기 다른 역할을 수행하며, 서비스 계층과 웹 계층을 명확히 분리함으로써 코드의 유지보수성과 재사용성을 높인다.
'개발 > Spring Boot' 카테고리의 다른 글
8. Spring Boot : Thymeleaf & JSP (0) 2024.07.30 6. Spring Boot : 의존성 주입 (0) 2024.07.30 5. Spring Boot : Service란 (0) 2024.07.30 4. Spring Boot : H2 데이터베이스 (0) 2024.07.29 3. Spring Boot : ORM과 JPA (0) 2024.07.29