목록돠깨비 (41)
리루
- 비어있을 수 있고, 어떤 값을 갖고 있을 수 있는 컨테이너 인스턴스 - null 체크를 하지 않으면 Null Pointer Exception이라는 문제가 발생 할 경우가 잦아질 수 있다. - 매번 Null check 할 수 없고 Human error가 있을 수 있다. - Null을 반환할 수 있는 상황 자체도 문제다. 방법 1. - null이 반환될 수 있는 코드에서 미리 null check를 해서 client 코드에 편의를 제공할 수 있다. 하지만 로직상 자꾸 exception 처리를 넣는건 좋은 습관이 아니다. 방법 2. - null을 그냥 반환하고 client 코드에서 null check를 한다. - 리턴 값으로만 Optional로 사용하길 권장된다. (매개변수 등으로 사용가능하지만 호출하는 쪽..
Stream -https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html - Sequence of elements supporting sequential and parallel aggregate operations. - 연속된 데이터를 처리하는 Operation의 모임 - 데이터를 담는 저장소가 아니라 데이터를 소스로 사용해서 어떠한 처리를 하는 것 - Functional in nature : Stream으로 전달받은 데이터 다체를 변경하는게 아니라 또다른 Stream을 반환한다. - 들어오는 데이터가 무제한일 수 있다. - 들어오는 데이터가 무제한일 때 Short Circuit 메소드를 사용해 제한할 수 있다. - Stream 이 제공..
Functional Interface : Any interface with a SAM(Single Abstract Method) is a functional interface, and its implementation may be treated as lambda expressions. - Java8에서는 Interface에 static method / default method가 사용가능하다. 이러한 추가적인 함수들이 있더라도 SAM이 하나만 존재한다면 Functional Interface라고 할 수 있다. - `void do something();` 앞에는 `abstract`가 생략되어 있다고 볼 수있다. - Abstract Method가 복수개가 되면 컴파일에러가 발생한다.(`@FunctionalIn..
1. 쿠버네티스 사용 이유. - 대규모 서비스를 최대한 자원을 효율적으로 사용하기 위함. - 기존 VM(VMWare, Open Stack)들은 가상화는 되는데 효율이 안나왔다.(무거운 OS를 사용하게 돼서) - dot Cloud 라는 회사가 Linux의 cgroup이라는 자원 격리기술을 Container라는 기술로 만드들고 docker라고 회사명을 변경 - 컨테이너 가상화 기술은 서버스간 자원격리를 해서 OS를 따로 띄우지 않아도 됨. - OS 가동시간이 없기 때문에 자동화시에 엄청 빠르고 자원 효율도 매우 높음. - 근데 도커 자체는 하나의 서비스를 컨테이너로 가상화시켜서 배포를 하는거지 엄청 많은 서비스들을 운영할 때 그걸 일일이 배포하고 운영하는 역할을 하진 않는다. - 이런걸 해주는게 컨테이너 오..
1. 요청이 어떻게 처리되느냐? - 해당 요청의 정보들을 판단한다.(Multipart, Theme, etc..) - 요청을 처리할 수 있는 Handler를 찾는다. (DispatcherServlet 이 들고있는 여러 종류의 HandlerMapping 중, 기본적으로는 BeanNameUrlHandlerMapping, RequestMappingHandlerMapping 인터페이스가 있다.) - RequestMappingHandlerMapping 가 @Controller, @GetMapping, @PostMapping 등을 사용한 Handler를 찾아준다. - 찾은 Handler를 가져와 어느 HandlerAdapter가 찾아낸 Handler를 실행할 수 있는가를 찾아낸다. 이 경우에는 RequestMappi..
1. Servlet Application에 Spring 적용의 의미란? - 스프링이 제공하는 IoC 컨테이너를 활용하겠다. - 스프링이 제공하는 서블릿 구현체 DispatcherServlet을 사용하겠다. 1-1. (임의로 만든 Servlet에서) 스프링이 제공하는 IoC 컨테이너를 활용하겠다. - 의존성 필요 org.springframework spring-webmvc 5.2.3.RELEASE - web.xml 파일 내 Listener 변경(기등록된 리스너를 제거하고, Spring에서 제공하는 ContextLoaderListener 등록) - ContextLoaderListener는 Spring IoC Container (즉, Application Context)를 Servlet Application ..
1. 서블릿 리스너 - 웹 애플리케이션에서 발생하는 주요 이벤트를 감지하고 각 이벤트에 특별한 작업이 필요한 경우에 사용할 수 있다. - 서블릿 컨테이너에서 발생하는 이벤트(서블릿 라이크사이클의 변화, 애트리뷰트의 변화, 세션의 변화) - 여러개의 서블릿이 공톡적으로 사용할 객체들을 넣어놓는 등의 목적으로 사용할 수 있다.(DB 연결 등) 2. 서블릿 필터 - 요청이 서블릿의 doGet으로 바로가기 전에 전처리 및 응답에 처리를 하기위해서 사용. - 들어온 요청을 서블릿으로 보내고 또 서블릿이 작성한 응답을 클라이언트로 보내기 전에 특별한 처리가 필요한 경우에 사용된다. - 체인 형태의 구조를 갖는다.(순차적으로 적용된다, 반드시 다음 체인으로 넘어가도록 코드를 작성해줘야 한다.) 3. 서블릿 리스너 실..
1. 준비 - Maven : maven-archetype-webapp - 톰켓 - Servlet dependency https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api/4.0.1 Maven Repository: javax.servlet » javax.servlet-api » 4.0.1 Professional Java Data: RDBMS, JDBC, SQLJ, OODBMS, JNDI, LDAP, Servlets, JSP, WAP, XML, EJBs, CMP2.0, JDO, Transactions, Performance, Scalability, Object and Data Modeling (2001)by Carl Calvert Bettis..
스프링 웹 엠브씨는 서블릿 기반의 웹 애플리케이션을 쉽게 만들게 도와주는 프레임워크이다. 그렇담 서블릿은? - 자바 엔터프라이즈 에디션은 웹 애플리케이션 개발용 스펙과 API를 제공한다.(ex, HttpServlet) - 하나의 요청을 받을 때마다 쌔로운 쓰레드를 만들어서(혹은 풀에서 가져다가) 요청을 처리(CGI같은 기술에 비해 훨씬 빠르고, OS에 플랫폼 독립적인 JAVA 본연의 기능을 지원받을 수 있다.). 그렇담 서블릿 컨테이너(서블릿 엔진)은? - 톰켓, 제티, 언더토우 - 서블릿 스펙을 준수, 구현하는 컨테이너들 - 서블릿을 어떻게 초기화하고, 실행하고, 사용하는지의 서블릿의 라이프사이클을 관리. - 세션, 네트워크 관리 - 서블릿 애플리케이션은 우리가 직접 실행할 수 없고, 서블릿 컨테이너가..
- 용어 - HandlerMapper : Handler를 찾아주는 인터페이스 - HandlerAdaptor : Handler를 수행해주는 인터페이스 - View Resolver : View 이름(String 값)을 갖고 실제 매핑되는 View 파일(리소스)을 찾아 변환하는 인터페이스. - 구성 1. MultipartResolver interface : 파일 업로드 요청 처리에 필요한 인터페이스(http 요청에서 content-type : multipart 은 경우, 바이너리로 쪼개져서 날아오는 파일들을 받기위한 처리 작업을 한 것으로 예상, HttpServletRequest -> MultipartHttpServletRequest로 변환) : DispatcherServlet에는 DefaultStratage..