ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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

    댓글

Designed by Tistory.