스프링 없는 순수한 DI 컨테이너인 AppConfig는 요청을 할 때 마다 객체를 새로 생성함단점 - 메모리 낭비가 심함해결방안 - 해당 객체가 1개만 생성되고 공유되게 설계하면 됨(싱글톤 패턴)클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴싱글톤 패
@Configuration과 싱글톤 AppConfig 코드에서 빈을 만들 때, memberService에서 memberRepository()를 호출하며 orderService에서도 memberRepository()를 호출한다. memberRepository()는 ne
지금까지 스프링 빈을 등록할 때 자바 코드에 @Bean을 사용하였다. 하지만 빈이 많이지면 일일이 등록하고 누락하는 문제도 신경써야 하는 등 관리가 힘들어 진다.스프링은 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공한다. 또한 의존관계도 자동으로 주입하
컴포넌트 스캔할 때 컴포넌트 스캔 대상을 추가로 지정하거나 제외할 수 있다.includeFilters : 컴포넌트 스캔 대상을 추가로 지정한다.excludeFilters : 컴포넌트 스캔에서 제외할 대상을 지정한다.컴포넌트 스캔 대상에 추가할 애노테이션컴포넌트 스캔 대
스프링 부트는 @ServletComponentScan을 지원하여 스프링이 현재 패키지를 포함해 하위 패키지를 탐색하여 모든 서블릿을 찾아 자동으로 등록한다.HelloServlet 클래스를 생성하여 HttpServlet을 상속받는다.@WebServlet 서블릿 어노테이션
GET - 쿼리 파라미터\-/url?username=hello&age=20\-메시지 바디 없이, URL의 쿼리 파라미터에 데이터를 포함해서 전달\-예) 검색, 필터, 페이징등에서 많이 사용하는 방식POST - HTML Form\-content-type: applicat
JSON 형식 전송POST http://localhost:8080/request-body-jsoncontent-type: application/jsonmessage body: {"username": "hello", "age": 20}결과: messageBody
HTTP 응답으로 HTML을 반환할 때는 content-typed을 text/html로 지정해야 한다.HTTP 응답으로 JSON을 반환할 때는 content-type을 application/json로 지정해야 한다.Jackson 라이브러리가 제공하는 objectMapp
대부분의 의존관계 주입은 한번 일어나면 애플리케이션 종료시점까지 의존관계를 변경할 일이 없다. 오히려 대부분의 의존관계는 애플리케이션 종료 전까지 변하면 안된다.(불변해야 한다.)수정자 주입을 사용하면, setXxx 메서드를 public으로 열어두어야 한다.누군가 실수
@Autowired는 타입으로 조회하기 때문에 ac.getBean(DiscountPolicy.class)와 유사하게 동작한다.하지만 DiscountPolicy 의 하위 타입인 FixDiscountPolicy , RateDiscountPolicy 둘다 스프링 빈으로 선언
스프링 컨테이너 생성 -> 스프링 빈 생성 -> 의존관계 주입 -> 초기화 콜백 -> 사용 -> 소멸전 콜백 -> 스프링 종료초기화 콜백: 빈이 생성되고, 빈의 의존관계 주입이 완료된 후 호출소멸전 콜백: 빈이 소멸되기 직전에 호출인터페이스(InitializingBea
운영 시스템에서는 System.out.println() 같은 시스템 콘솔을 사용해서 필요한 정보를 출력하지 않고, 별도의 로깅 라이브러리를 사용해서 로그를 출력한다.스프링 부트 라이브러리를 사용하면 스프링 부트 로깅 라이브러리( spring-boot-starter-lo
추가적인 API 만들기풀이 과정1\. 쿼리 파라미터로 값을 받기 위해 DTO 생성계산결과를 JSON형식으로 받기 위해 CalculatorDomain 생성Controller에서 객체를 리턴하면 JSON으로 응답이 가게 된다. 이때 객체에 getter가 있어야 한다.Con