Interceptor란?org.springframework.web.servlet의 HandlerInterceptor 인터페이스로, 스프링 MVC에서 웹 애플리케이션 내에 특정한 uri 호출을 가로채는 역할을 함특징Dispatcher Servlet이 Controller를 호출하기 전 / 후에 인터셉터가 끼어들어 요청과 응답을 참조하거나 가공할 수 있는 기능을 제공Request, Response 조작 불가능스프링 컨텍스트에서 동작처리 과정디스패처 서블릿이 핸들러 매핑을 통해 컨트롤러를 찾도록 요청하는데, 그 결과로 실행 체인(HandlerExecutionChain)을 돌려줌여기서 1개 이상의 인터셉터가 등록되어 있다면 순차적으로 인터셉터들을 거쳐 컨트롤러가 실행되도록 하고,인터셉터가 없다면 바로 컨트롤러를 ..
Spring Filter란?javax.servlet.Filter는 Java Servlet API의 일부로, 요청과 응답을 거른뒤 정제하는 역할특징DispatcherServlet에 요청이 전달되기 전 / 후에 url 패턴에 맞는 모든 요청에 대해 부가 작업을 처리할 수 있는 기능 제공Request, Response 조작 가능 (필터 체이닝에서 request, response를 넘겨줄 수 있어서)FilterChain(필터 체인)을 통해 여러 필터가 연쇄적으로 동작 가능웹 컨테이너(서블릿 컨테이너)에서 동작언제 사용되나요?주로 요청에 대한 인증, 권한 체크 등에 사용됨들어온 요청이 DispatcherServlet에 전달되기 전에 헤더를 검사해 인증 토큰이 있는지 없는지, 올바른지 올바르지 않은지 등을 검사구현..
DI란?의존성 주입(외부에서 두 객체 간의 관계를 결정해주는 디자인 패턴), 객체를 직접 생성하는 게 아니라 외부에서 생성한 후 주입하는 방식과정A 객체에서 B, C 객체를 의존할 때, A 객체에서 B, C 객체를 직접 생성하는 것이 아니라 외부(IoC 컨테이너)에서 생성된 객체를 주입인터페이스를 사이에 둬서 클래스 레벨에서는 의존관계가 고정되지 않도록 하고 런타임 시에 관계를 동적으로 주입하여 유연성을 확보하고 결합도를 낮춤객체 자체가 코드 상에서 객체 생성에 관여하지 않아도 돼서 객체 사이의 의존도 낮출 수 있음DI(의존성 주입) 3가지 방법1. 생성자 주입@Controllerpublic class PetController{ private final PetService petService; @A..
Spring Bean이란?Spring에서 Bean은 Spring IoC 컨테이너에 의해 관리되는 Java Object또한, Spring에서는 등록되어 있는 Bean을 싱글톤 객체로 생성하여 관리코드 중에 new 연산자로 객체를 생성한 경우 그 객체는 Spring IoC 컨테이너에 의해 관리되지 않기 때문에 Bean이라고 할 수 없음 Spring IoC 컨테이너란?Spring IoC 컨테이너는 인스턴스의 생명주기를 관리하며, 생성된 인스턴스들에게 추가적인 기능을 제공그 중 의존성 주입도 있음단, 의존성 주입을 받으려면 전제 조건으로 빈이 되어야 함 그래서 Bean 어떻게 등록하는데!Bean 등록하는 방법1. 수동 등록방법설정 클래스에 @Configuration 어노테이션을 붙이고, 메소드에 @Bean 어노..
스프링에서 빈을 등록하는 방법에 대해 설명해주세요. [CS] Spring에서 Bean 등록하는 방법Spring Bean이란?Spring에서 Bean은 Spring IoC 컨테이너에 의해 관리되는 Java Object또한, Spring에서는 등록되어 있는 Bean을 싱글톤 객체로 생성하여 관리코드 중에 new 연산자로 객체를 생성한 경우 그no-delay.tistory.com DI에 대해 설명해주세요. [CS] Spring DI란?DI란?의존성 주입(외부에서 두 객체 간의 관계를 결정해주는 디자인 패턴), 객체를 직접 생성하는 게 아니라 외부에서 생성한 후 주입하는 방식과정A 객체에서 B, C 객체를 의존할 때, A 객체에서 Bno-delay.tistory.com Spring Filter와 Intercep..
문제 링크문제 설명지민이는 N개의 원소를 포함하고 있는 양방향 순환 큐를 가지고 있다. 지민이는 이 큐에서 몇 개의 원소를 뽑아내려고 한다.지민이는 이 큐에서 다음과 같은 3가지 연산을 수행할 수 있다.1. 첫 번째 원소를 뽑아낸다. 이 연산을 수행하면, 원래 큐의 원소가 a1, …, ak이었던 것이 a2, …, ak와 같이 된다.2. 왼쪽으로 한 칸 이동시킨다. 이 연산을 수행하면, a1, …, ak가 a2, …, ak, a1이 된다.3. 오른쪽으로 한 칸 이동시킨다. 이 연산을 수행하면, a1, …, ak가 ak, a1, …, ak-1이 된다.큐에 처음에 포함되어 있던 수 N이 주어진다. 그리고 지민이가 뽑아내려고 하는 원소의 위치가 주어진다. (이 위치는 가장 처음 큐에서의 위치이다.) 이때, 그 ..
난이도 : Lv. 1 / 걸린 시간 : 7분 30초문제 링크 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제 설명사진들을 보며 추억에 젖어 있던 루는 사진별로 추억 점수를 매길려고 합니다. 사진 속에 나오는 인물의 그리움 점수를 모두 합산한 값이 해당 사진의 추억 점수가 됩니다. 예를 들어 사진 속 인물의 이름이 ["may", "kein", "kain"]이고 각 인물의 그리움 점수가 [5점, 10점, 1점]일 때 해당 사진의 추억 점수는 16(5 + 10 + 1)점이 됩니다. 다른 사진 속 인물의 이름이 ["kali", "mari", "don", "tony..
난이도 : Lv. 1 / 걸린 시간 : 12분 40초문제 링크 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제 설명코딩테스트를 준비하는 머쓱이는 프로그래머스에서 문제를 풀고 나중에 다시 코드를 보면서 공부하려고 작성한 코드를 컴퓨터 바탕화면에 아무 위치에나 저장해 둡니다. 저장한 코드가 많아지면서 머쓱이는 본인의 컴퓨터 바탕화면이 너무 지저분하다고 생각했습니다. 프로그래머스에서 작성했던 코드는 그 문제에 가서 다시 볼 수 있기 때문에 저장해 둔 파일들을 전부 삭제하기로 했습니다.컴퓨터 바탕화면은 각 칸이 정사각형인 격자판입니다. 이때 컴퓨터 바탕화면의 상태..