이 포스팅은 인프런의 김영한님의 강의를 복습하며 정리한 글입니다. 로그 추적기 개발 요구사항 개발의 편의를 위해서 모든 메서드마다 다음과 같은 로그를 남기는 로그 추적기의 개발 및 적용이 필요하다고 가정하자. 필요 요구사항은 다음과 같다. UUID로 요청을 분류한다. 실행되는 메서드들의 이름을 출력한다. 실행되는 메서드들이 아래로 내려가면 갈수록 -->,
@RequiredArgsConstruct @Autowired public myClass(nextClass nextclass, EntityManager entityManager){ this.nextClass = nextClass; this.entityManager = entityManager; } @RequiredArgsConstruct는 위 코드를 대신해주는 녀석이다. 이 어노테이션으로 의존관계를 주입하기 위해서는 반드시 메서드 내에 생성자가 하나만 있어야한다. 스프링은 생성자가 하나만 있으면, 생성자에 @AutoWired를 달지 않아도 필요한 스프링 빈을 찾아서 의존관계를 주입해주기 때문이다. 이 때, JPA와 관련되서 쓴다면 EntityManager도 함께 DI를 해주는 것을 인지해야한다.
이 포스팅은 인프런의 김영한님 강의를 복습하면서 작성하는 글입니다. ERROR 클라이언트가 이런 저런 요청을 할 때, 서버 입장에서 피할 수 없는 것은 바로 에러다. 에러는 클라이언트가 잘못된 요청을 할 수도 있고, 아니면 서버 자체에 문제가 있어서 발생할 수도 있다. 여기서 숙지하고 넘어가야할 것은 에러의 원인이 여러가지가 있을 수 있다는 점이다. 에러의 원인이 여러가지라면 당연하게도 에러의 원인에 따라 다양한 조치가 들어가야한다. 예를 들어 클라이언트에서 잘못 요청한 것이 문제라면, 잘못 요청했다는 화면을 보여주면 된다. 예를 들어 서버에서 문제라면, 서버가 현재 문제라는 것을 보여주면 된다. 스프링에서는 컨트롤러에서 문제가 발생하면 기본적으로 Exception이 발생하며 TomCat 서블릿 컨테이너..
@Autowired가 붙었을 때의 동작 공부 @Autowired는 @ComponentScan과 함께 주로 사용된다. @ComponentScan을 통해 @Component가 붙은 객체들이 모두 생성되어 빈 컨테이너에 저장이 된다. 저장이 완료된 후, 의존관계를 주입하는 단계에서 @Autowired가 붙은 메서드들이 하나씩 호출이 된다. 이 때, 각 메서드의 매개변수에 해당되는 타입이 스프링 빈 컨테이너에서 찾아온 후 의존관계 주입이 된다. 순서를 좀 더 간략히 정리해보면 다음과 같을 것 같다. @ComponentScan이 @Component의 대상인 모든 Class를 읽어온다. 모든 Class의 생성자를 통해 싱글톤 객체를 하나 생성해서 스프링 컨테이너의 빈 저장소에 저장한다. 의존관계 주입 단계에서 @A..
이 게시글은 인프런 영한님의 강의를 듣고 복습하며 정리한 글입니다. 빈 스코프란? 빈 스코프는 '빈이 존재할 수 있는 범위'를 의미한다. 빈이 존재할 수 있는 범위에 따라서 여러 형태의 빈 스코프로 나누어지게 된다. 빈 스코프는 여러가지가 있는데, 아래 정도로 간략히 나눌 수 있다. 싱글톤 : 기본 스코프. 스프링 컨테이너 시작부터 종료까지 유지되는 스코프. 가장 넓은 범위 프로토타입 : 스프링 컨테이너는 프로토타입 빈의 생성, 의존관계 주입, 초기화 메서드까지만 관여. 클라이언트에게 빈을 반환 후, 이후 관리는 클라이언트에서만 관리한다. 따라서 종료 메서드가 호출되지 않는다. Request : 클라이언트로부터 Http 요청이 들어오고 나갈 때까지만 유지되는 빈. 프로토타입 스코프란? 싱글톤 스코프는 항..