일반적인 웹 애플리케이션 계층 구조

캡처.PNG

출처 : https://www.inflearn.com/course/스프링-입문-스프링부트/dashboard - 강의자료

컨트롤러 : 웹 MVC의 컨트롤러 역할

@RestController
@RequestMapping("/users")
public class UserController {
    private final UserService userService;

    @Autowired
    public UserController(UserService userService) {
        this.userService = userService;
    }

    @GetMapping("/{id}")
    public ResponseEntity<User> getUser(@PathVariable Long id) {
        return ResponseEntity.ok(userService.getUserById(id));
    }
}

<aside> 💡

컨트롤러는 서비스를 호출하고, 결과를 응답한다.

</aside>


서비스 : 핵심 비즈니스 로직 구현

@Service
public class UserService {
	private final UserRepository userRepository;

	@Autowired
	public UserService(UserRepository userRepository) {
	    this.userRepository = userRepository;
	}
	
	public User getUserById(Long id) {
	    return userRepository.findById(id)
	            .orElseThrow(() -> new RuntimeException("User not found"));
	}
}	

<aside> 💡

서비스는 리포지토리를 호출하여 데이터를 가져오고, 필요한 비즈니스 로직을 처리한다.

</aside>


리포지토리 : 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리