Spring의 Controller 클래스도 Spring Bean이고 Spring Bean은 기본적으로 싱글톤인데 어떻게 수많은 요청을 Thread-Safe하게 처리가 가능한지 궁금했다. 그런데 이 문제에 대한 답은 JAVA 메모리 구조를 공부했으면 금방 이해할 수 있을 것이다. @RestController public class UserController { @PostMapping("/users") public void save(User user) { ... } } 위 코드는 사용자의 정보를 저장하는 Controller의 save 메서드가 있다. 동시에 여러개의 요청이 들어오면 Tomcat은 내부적으로 다음과 같이 요청을 처리한다. 요청이 들어온 순서대로 Queue에 담는다. ThreadPool에 현재 ..
Spring으로 개발하면 @Controller, @Service, @Repository 등의 어노테이션으로 Bean을 생성할 수 있는데 그렇다면 Bean을 생성할 때 어떤 클래스를 Bean으로 생성해야하는 것 일까? 그건 바로 값들을 담는 클래스가 아니라 작업을 하는 클래스를 Bean으로 생성해야한다. 예를들어 유저의 정보를 담고 있는 User클래스가 있고 유저의 정보로 관련된 작업을 하는 UserController클래스가 있다고 할 때 UserController는 Bean으로 등록해야하고 User클래스는 Bean으로 등록하지 않는다. @RestController public class UserController { @PostMapping("/users") public void save(User user..