Spring 4

Provider와 프록시, 마무리

스코프와 Provider ObjectProvider 덕분에 ObjectProvider.getObject()를 호출하는 시점까지 request scope 빈의 생성을 지연할 수 있다. ObjectProvider.getObject()를 호출하는 시점에는 HTTP 요청이 진행중이므로 request scope 빈의 생성이 정상처리된다. ObjectProvider.getObject()를 LogDemoController, LogDemoService에서 각각 한번씩 따로 호출해도 같은 HTTP 요청이면 같은 스프링 빈이 반환된다. 스코프와 프록시 프록시 방식 proxyMode = ScopedProxyMode.TARGET_CLASS를 추가 적용 대상이 클래스면 TAGET_CLASS 인터페이스면 INTERFACES MY..

Spring 2023.03.01

의존관계 자동 주입, 빈 생명주기 콜백

의존관계 자동 주입 생성자 주입을 사용하면 필드에 final 사용 가능 생성자에서 혹시라도 값이 설정되지 않는 오류를 컴파일 시점에 막아줌 컴파일 오류는 세상에서 가장 빠르고 좋은 오류임 나머지 주입 방식은 모두 생성자 이후에 호출됨, 필드에 final 키워드를 사용할 수 없음 오직 생성자 주입 방식만 final 키워드를 사용할 수 있다. 생성자 주입은 프레임워크에 의존하지 않고, 순수한 자바 언어의 특징을 잘 살리는 방법 롬복이라는 라이브러리를 적용해보자. 최근에는 생성자를 딱 1개 두고, @Autowired를 생략하는 방법을 주로 사용, 여기에 Lombok 라이브러리의 @RequiredArgsConstructor를 함께 사용하면 기능은 다 제공하면서 코드는 깔끔하게 사용할 수 있다. 가끔 생성자를 직..

Spring 2023.02.12

Spring - 웹 개발 기초(정적 컨텐츠, MVC와 템플릿 엔진)

정적 컨텐츠 MVC와 템플릿 엔진 정적 컨텐츠 정적 컨텐츠는 클라이언트의 요청을 받고 서버에 미리 저장된 HTML, CSS, JS 등의 파일을 그대로 응답해 보여주는 것을 말합니다. 모든 클라이언트들의 요청에 대해 동일한 결과를 보여줍니다. 서버에서 어떠한 동작 없이 파일을 그대로 웹브라우저에 보여주는 것 정적 컨텐츠를 이용한 웹 개발 스프링 부트는 기본적으로 정적 컨텐츠 기능을 제공한다. \main\resources\static 하위에 hello-static.html 파일을 생성 hello-static.html 정적 컨텐츠 입니다. 1. 클라이언트로부터 localhost:8080/hello-static.html 요청이 들어오면 내장 톰켓 서버를 거친다. 2. 스프링 컨테이너에서 hello-static ..

Spring 2022.12.30

Spring - 프로젝트 환경설정

스프링 부트 스타터 사이트로 이동해서 프로젝트를 생성한다 프로젝트 선택 Project: Gradle - Groovy Project Spring Boot: 2.3.x Language: Java Packaging: Jar Java: 11 Project Metadata groupId: hello artifactId: hello-spring Dependencies: Spring Web, Thymeleaf IntelliJ에서 JDK는 11로 설정하였다. 동작 확인은 스프링 부트 메인 실행 후 http://localhost:8080에 접속했을 때 에러 페이지가 뜬다면 성공적으로 된 것이다. 라이브러리를 한번 살펴보자 Gradle은 의존관계가 있는 라이브러리를 함께 다운로드 한다. 현업에서는 System.out.pr..

Spring 2022.12.29