일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 코드숨
- 2020년 정보처리기사 4회
- 주간회고
- git
- java
- sqldeveloper
- 정보처리기사
- LeetCode
- Til
- 서평
- Jackson
- 2020년 제4회 정보처리기사 필기 문제 분석
- 책리뷰
- 함수형 코딩
- hackerrank
- post
- 필기
- 회고
- 미니프로젝트
- Python
- Real MySQL
- 2020년 일정
- 뇌정리
- 알고리즘
- algorithms
- 스터디
- 성적프로그램
- rownum
- If
- jsp
- Today
- Total
목록공부/Spring (17)
조컴퓨터
HTTP 요청 메시지를 통해 클라이언트에서 서버로 데이터를 전달하는 방법을 알아보자. 주로 다음 3가지 방법을 사용한다. - GET - 쿼리 파라미터 - /url?username=hello&age=20 - 메시지 바디 없이, URL 의 쿼리 파라미터에 데이터를 포함해서 전달 - 예) 검색, 필터, 페이징 등에서 많이 사용하는 방식 *전체 파라미터 조회 @WebServlet(name = "requestParamServlet", urlPatterns = "/request-param") public class RequestParamServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServle..
요청마다 쓰레드 생성의 단점 보완 - 특징 - 필요한 쓰레드를 쓰레드 풀에 보관하고 관리한다. - 쓰레드 풀에 생성 가능한 쓰레드의 최대치를 관리한다. 톰캣은 최대 200개 기본 설정 (변경 가능) - 사용 - 쓰레드가 필요하면, 이미 생성되어 있는 쓰레드를 쓰레드 풀에서 꺼내서 사용한다. - 사용을 종료하면 쓰레드 풀에 해당 쓰레드를 반납한다. - 최대 쓰레드가 모두 사용중이어서 쓰레드 풀에 쓰레드가 없으면? - 기다리는 요청은 거절하거나 특정 숫자만큼만 대기하도록 설정할 수 있다. - 장점 - 쓰레드가 미리 생성되어 있으므로, 쓰레드를 생성하고 종료하는 비용(CPU) 이 절약되고, 응답 시간이 빠르다. - 생성 가능한 쓰레드의 최대치가 있으므로 너무 많은 요청이 들어와도 기존 요청은 안전하게 처리할 ..
- 톰캣처럼 서블릿을 지원하는 WAS 를 서블릿 컨테이너라고 함 - 서블릿 컨테이너는 서블릿 객체를 생성, 초기화, 호출, 종료하는 생명주기를 관리함 - 서블릿 객체는 싱글톤으로 관리됨 - 고객의 요청이 올 때마다 계속 객체를 생성하는 것은 비효율 - 최초 로딩 시점에 서블릿 객체를 미리 만들어두고 재활용 - 모든 고객 요청은 동일한 서블릿 객체 인스턴스에 접근 - 공유 변수 사용 주의* - 서블릿 컨테이너 종료시 함께 종료 - JSP 도 서블릿으로 변환되어서 사용 - 동시 요청을 위한 멀티 쓰레드 처리 지원 톰캣을 사용하기만 했지 싱글톤으로 돌아가고 있는줄은 몰랐다. 참고) 김영한 님의 '스프링 MVC 1편 - 백엔드 웹 개발 핵심'에서 서블릿
빈 스코프란? 스프링 빈이 스프링 컨테이너의 시작과 함께 생성되어서 스프링 컨테이너가 종료될 때까지 유지될 수 있는 것은 스프링 빈이 기본적으로 싱글톤 스코프로 생성되기 때문이다. 스코프는 번역 그대로 빈이 존재할 수 있는 범위를 뜻한다. - singleton: 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프 - prototype: 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프이다. - request: 웹 요청이 들어오고 나갈 때까지 유지되는 스코프 - session: 웹 세션이 생성되고 종료될 때까지 유지되는 스코프 - application: 웹의 서블릿 컨텍스트와 같은 범위로 유지되는 스코프 프로토타..
데이터베이스의 연결 풀이나, 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면, 객체의 초기화 종료 작업이 필요하다. 스프링 빈은 간단하게 다음과 같은 라이프사이클을 가진다. 객체 생성 → 의존관계 주입 스프링 빈은 객체를 생성하고, 의존관계 주입이 다 끝난 다음에야 필요한 데이터를 사용할 수 있는 준비가 완료된다. 따라서 초기화 작업은 의존관계 주입이 모두 완료되고 난 다음에 호출해야 한다. 그런데 개발자가 의존관계 주입이 모두 완료된 시점을 어떻게 알 수 있을까? 스프링은 의존관계 주입이 완료되면 스프링 빈에게 콜백 메서드를 통해서 초기화 시점을 알려주는 다양한 기능을 제공한다. 또한 스프링은 스프링 컨테이너가 종료..
조회해야 할 빈이 2개 이상이 되는 경우에 해당하는 이야기이다. - @Autowired 필드명 매칭 - @Qualifier → @Qualifier 끼리 매칭 → 빈 이름 매칭 - @Primary 사용 @Autowired 매칭 1. 타입 매칭 2. 타입 매칭의 결과가 2개 이상일 때 필드명, 파라미터명으로 빈 이름 매칭 @Qualifier 사용 - @Qualifier 는 추가 구분자를 붙여주는 방법이다. 주입시 추가적인 방법을 제공하는 것이지 빈 이름을 변경하는 것은 아니다. @Component @Qualifier("mainDiscountPolicy") public class RateDiscountPolicy implements DiscountPolicy {} @Component @Qualifier("fi..
1) 생성자에 final 키워드 사용(생성자 1개라 @Autowired 생략한 형태) @Component public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) { this.memberRepository = memberRepository; this.discountPolicy = discountPolicy; } } 2) Lombok 라이브..
의존관계 주입은 크게 4가지 방법이 있다. - 생성자 주입 - 수정자 주입(setter 주입) - 필드 주입 - 일반 메서드 주입 생성자 주입 - 말그대로 생성자를 통해서 의존관계를 주입 받는 방법이다. - 생성자 호출 시점에 딱 1번만 호출되는 것이 보장된다. - 불변, 필수 의존관계에 사용 @Component public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public OrderServiceImpl(MemberRepository memberRepository, Di..