스프링
스프링 MVC 2 - 정리(파일 업로드)
스프링 MVC 2 - 정리(파일 업로드)
2022.10.20정리(파일 업로드) 파일 업로드 소개 HTML Form을 통한 파일 업로드를 이해하려면 먼저 폼을 전송하는 다음 두 가지 방식의 차이를 이해해야 한다. application/x-www-form-urlencoded multipart/form-data 프로젝트 생성 서블릿과 파일 업로드1 서블릿은 multipart를 지원한다. 그래서 request.getParts()를 하면 part를 받을 수 있다. 이것을 사용하려면 spring.servlet.multipart.enabled=true로 켜져있어야 한다. 이것이 꺼져있으면 WAS자체가 이것은 multipart를 사용하지 않는구나 하고서 아예 기능을 지원하지 않게된다. 서블릿과 파일 업로드2 서블릿이 제공하는 Part에 대해 알아보았다. 먼저 applicati..
스프링 MVC 1 - 웹 서버, 웹 애플리케이션 서버
스프링 MVC 1 - 웹 서버, 웹 애플리케이션 서버
2022.06.23웹 서버, 웹 애플리케이션 서버 웹이라는 것은 다 HTTP를 기반으로 통신을 한다. 예를 들어서, 클라이언트(웹브라우저)에서 URL을 치면, 인터넷을 통해서 서버에 접근을 하고, 서버에서는 HTML을 만들어서 클라이언트에 내려준다. 그러면 클라이언트는 받은 HTML을 가지고 우리에게 보여줄 것이다. 그런데, 클라이언트에서 서버로 데이터를 전송할 때, 그리고 서버에서 클라이언트로 데이터를 응답할 때, 이때 다, HTTP 라는 프로토콜을 기반으로 동작하게 된다. 그래서 웹 세상에서는 모든 것이 HTTP를 기반으로 데이터를 주고 받는다. 웹 서버가 뭘까? (Web Server) HTTP 기반으로 동작 정적 리소스 제공, 기타 부가기능 정적(파일) HTML, CSS, JS, 이미지, 영상 예) nginx, ap..
스프링 기본 - 스코프와 프록시
스프링 기본 - 스코프와 프록시
2022.06.13스코프와 프록시 이번에는 프록시 방식을 사용해보자. 여기가 핵심이다. proxyMode = ScopedProxyMode.TARGET_CLASS 를 추가해주자. 적용 대상이 인터페이스가 아닌 클래스면 TARGET_CLASS를 선택 적용 대상이 인터페이스면 INTERFACES를 선택 이렇게 하면 MyLogger의 가짜 프록시 클래스를 만들어두고 HTTP request와 상관 없이 가짜 프록시 클래스를 다른 빈에 미리 주입해 둘 수 있다. 이제 나머지 코드를 Provider 사용 이전으로 돌려두자. 실행해보면 잘 동작하는 것을 확인할 수 있다. 코드를 잘 보면 LogDemoController, LogDemoService 는 Provider 사용 전과 완전히 동일하다. 어떻게 된 것일까? 웹 스코프와 프록시 동..
스프링 기본 - 스코프와 Provider
스프링 기본 - 스코프와 Provider
2022.06.13스코프와 Provider 첫번째 해결방안은 앞서 배운 Provider를 사용하는 것이다. 간단히 ObjectProvider를 사용해보자. main() 메서드로 스프링을 실행하고, 웹브라우저에 http://localhost:8080/log-demo 를 입력하자. 드디어 잘 작동하는 것을 확인할 수 있다. ObjectProvider 덕분에 ObjectProvider.getObject()를 호출하는 시점까지 request scope 빈의 생성을 지연할 수 있다.(정확히는 컨테이너에 요청하는 것을 지연) ObjectProvider.getObject()를 호출하는 시점에는 HTTP 요청이 진행중이므로 request scope 빈의 생성이 정상 처리된다. ObjectProvider.getObject()를 LogDe..
스프링 기본 - request 스코프 예제 만들기
스프링 기본 - request 스코프 예제 만들기
2022.06.13request 스코프 예제 만들기 웹 환경 추가 웹 스코프는 웹 환경에서만 동작하므로 web 환경이 동작하도록 라이브러리를 추가하자. build.gradle에 추가 이제 hello.core.CoreApplication의 main 메서드를 실행하면 웹 애플리케이션이 실행되는 것을 확인할 수 있다. 참고 : spring-boot-starter-web 라이브러리를 추가하면 스프링 부트는 내장 톰켓 서버를 활용해서 웹 서버와 스프링을 함께 실행시킨다. 참고 : 스프링 부트는 웹 라이브러리가 없으면 우리가 지금까지 학습한 AnnotationConfigApplicationContext 을 기반으로 애플리케이션을 구동한다. 웹 라이브러리가 추가되면 웹과 관련된 추가 설정과 환경들이 필요하므로 AnnotationCon..
스프링 기본 - 웹 스코프
스프링 기본 - 웹 스코프
2022.06.13웹 스코프 지금까지 싱글톤과 프로토타입 스코프를 학습했다. 싱글톤은 스프링 컨테이너의 시작과 끝까지 함께하는 매우 긴 스코프이고, 프로토타입은 생성과 의존관계 주입, 그리고 초기화까지만 진행하는 특별한 스코프이다. 이번에는 웹 스코프에 대해서 알아보자. 웹 스코프의 특징 웹 스코프는 웹 환경에서만 동작한다. 웹 스코프는 프로토타입과 다르게 스프링이 해당 스코프의 종료시점까지 관리한다. 따라서 종료 메서드가 호출된다. 웹 스코프 종류 request : HTTP 요청 하나가 들어오고 나갈 때 까지 유지되는 스코프, 각각의 HTTP 요청마다 별도의 빈 인스턴스가 생성되고, 관리된다. session : HTTP Session과 동일한 생명주기를 가지는 스코프 application: 서블릿 컨텍스트(Servlet..