Java/Spring
-
- Filter 와 Interceptor의 차이 * Filter : Dispatcher Servlet 앞단에서 정보를 처리하고, Interceptor는 Dispatcher Servlet에서 Controller로 가기전 요청을 가로채서 정보를 처리한다. - 기능적인 측면으론 완전히 다른 개념이다. * Interceptor : 특정 URI로 요청했을 때 컨트롤러로 가는 요청들을 가로챈다. : Dispatcher Servlet 이 요청을 받아 HandlerMapping을 통해 Controller로 보내는데 Controller로 가기전 Interceptor가 요청을 가로채어 정보를 처리한 후 Controller로 보내진다. interceptor/JwtInterceptor.java package com..
HandlerInterceptor- Filter 와 Interceptor의 차이 * Filter : Dispatcher Servlet 앞단에서 정보를 처리하고, Interceptor는 Dispatcher Servlet에서 Controller로 가기전 요청을 가로채서 정보를 처리한다. - 기능적인 측면으론 완전히 다른 개념이다. * Interceptor : 특정 URI로 요청했을 때 컨트롤러로 가는 요청들을 가로챈다. : Dispatcher Servlet 이 요청을 받아 HandlerMapping을 통해 Controller로 보내는데 Controller로 가기전 Interceptor가 요청을 가로채어 정보를 처리한 후 Controller로 보내진다. interceptor/JwtInterceptor.java package com..
2021.08.28 -
JVM 이란?JVM은 Java Virtual Machine으로 Java와 OS 사이에서 가장 중요한 중간자 역할을 한다. 자바 컴파일러(javac)가 개발자가 작성한 소스코드(.java)를 컴파일하면 바이트 코드(.class)가 된다.컴파일된 바이트 코드(.class) 를 OS에 맞게 기계어로 해석해주는 역할을 JVM 이 한다.쉽게 얘기하면 자바 소스코드(.java)를 컴파일 한 바이트 코드(.class)를 운영체제가 이해할 수 있도록해석하고 실행시키는게 JVM 이다. JVM 실행 순서자바 소스코드(.java)를 자바 컴파일러가 바이트코드(.class) 로 변환한다.변환된 바이트코드를 JVM 의 Class Loader(클래스로더) 로 전달한다.Class Loader(클래스 로더)에서 JVM 런타임 영역..
JVM, 자바 메모리 영역(코드, 데이터, Static, 스택, 힙)JVM 이란?JVM은 Java Virtual Machine으로 Java와 OS 사이에서 가장 중요한 중간자 역할을 한다. 자바 컴파일러(javac)가 개발자가 작성한 소스코드(.java)를 컴파일하면 바이트 코드(.class)가 된다.컴파일된 바이트 코드(.class) 를 OS에 맞게 기계어로 해석해주는 역할을 JVM 이 한다.쉽게 얘기하면 자바 소스코드(.java)를 컴파일 한 바이트 코드(.class)를 운영체제가 이해할 수 있도록해석하고 실행시키는게 JVM 이다. JVM 실행 순서자바 소스코드(.java)를 자바 컴파일러가 바이트코드(.class) 로 변환한다.변환된 바이트코드를 JVM 의 Class Loader(클래스로더) 로 전달한다.Class Loader(클래스 로더)에서 JVM 런타임 영역..
2021.08.28 -
기존 Servlet 방식 사용자의 요청을 servlet에게 전달하기 위해선 web.xml의 태그를 통해 servlet을 등록한다. testServlet servlet class testServlet /hello 등록된 servlet에 해당하는 url pattern을 체크하기 위해 태그도 사용한다. 하지만 아래의 그림과 같이 수많은 사용자의 요청을 처리하기 위해선 여러개의 servlet이 등록되어야 하는 불편함이 있다. 사용자 요청에 맞는 servlet을 생성하고 해당 servlet에 맞는 controller에게 요청을 보내준다. - Front Controller 패턴 적용 Front Controller 패턴을 적용하면 맨앞에 존재하는 Front Controller Servlet이 모든 ..
Dispatcher Servlet(Front Controller), ViewResolver기존 Servlet 방식 사용자의 요청을 servlet에게 전달하기 위해선 web.xml의 태그를 통해 servlet을 등록한다. testServlet servlet class testServlet /hello 등록된 servlet에 해당하는 url pattern을 체크하기 위해 태그도 사용한다. 하지만 아래의 그림과 같이 수많은 사용자의 요청을 처리하기 위해선 여러개의 servlet이 등록되어야 하는 불편함이 있다. 사용자 요청에 맞는 servlet을 생성하고 해당 servlet에 맞는 controller에게 요청을 보내준다. - Front Controller 패턴 적용 Front Controller 패턴을 적용하면 맨앞에 존재하는 Front Controller Servlet이 모든 ..
2021.08.28 -
* 의존성 주입(DI, Dependency Injection)프로그래밍에서 구성요소간의 의존 관계 소스코드 내부가 아닌 외부의 설정파일 등을 통해 정의되게 하는 디자인패턴중에 하나이다. 간단하게 말해서 의존성 주입이란 외부에서 의존 객체를 생성하여 넘겨주는 것예를 들어 A Class와 B Class 가 존재한다A Class가 B Class를 의존할때 B Object를 A가 직접 생성하지 않고 외부에서 생성하여 넘겨주면 의존성을 주입했다고 한다. 왼쪽 그림은 일반적인 A Class에서 B Object를 생성하는 형태이고, 오른쪽 그림은 A Class에서 B Object를 외부에서 생성하여 의존주입하는 형태이다.DI(의존성 주입)를 위해서 객체를 생성하고 넘겨주는 일은 DI Framework가 하는 일..
DI(Dependency Injection, 의존성 주입)* 의존성 주입(DI, Dependency Injection)프로그래밍에서 구성요소간의 의존 관계 소스코드 내부가 아닌 외부의 설정파일 등을 통해 정의되게 하는 디자인패턴중에 하나이다. 간단하게 말해서 의존성 주입이란 외부에서 의존 객체를 생성하여 넘겨주는 것예를 들어 A Class와 B Class 가 존재한다A Class가 B Class를 의존할때 B Object를 A가 직접 생성하지 않고 외부에서 생성하여 넘겨주면 의존성을 주입했다고 한다. 왼쪽 그림은 일반적인 A Class에서 B Object를 생성하는 형태이고, 오른쪽 그림은 A Class에서 B Object를 외부에서 생성하여 의존주입하는 형태이다.DI(의존성 주입)를 위해서 객체를 생성하고 넘겨주는 일은 DI Framework가 하는 일..
2021.08.28 -
보통 @Autowired 어노테이션을 사용해 의존성 자동 주입을 한다. 하지만 @Autowired 어노테이션을 사용해 의존성을 자동 주입하는데 동일한 bean 객체가 2개일 경우 Exception(예외)가 발생한다. 스프링 컨테이너 초기화 과정에서 Exception 예외 발생 * @Autowired 어노테이션을 사용해 의존성 자동 주입 과정에서 bean 객체가 한개여야 하지만 두개 이상의 bean일 경우 예외 발생 이러한 문제를 해결하기 위해서 @Qualifier 어노테이션이 필요하다. @Qualifier 어노테이션은 사용할 의존 객체를 선택할수 있다. @Autowired @Qualifier(value = "bean 객체 이름") LicenseService ls; * @Quali..
@Qualifier 어노테이션보통 @Autowired 어노테이션을 사용해 의존성 자동 주입을 한다. 하지만 @Autowired 어노테이션을 사용해 의존성을 자동 주입하는데 동일한 bean 객체가 2개일 경우 Exception(예외)가 발생한다. 스프링 컨테이너 초기화 과정에서 Exception 예외 발생 * @Autowired 어노테이션을 사용해 의존성 자동 주입 과정에서 bean 객체가 한개여야 하지만 두개 이상의 bean일 경우 예외 발생 이러한 문제를 해결하기 위해서 @Qualifier 어노테이션이 필요하다. @Qualifier 어노테이션은 사용할 의존 객체를 선택할수 있다. @Autowired @Qualifier(value = "bean 객체 이름") LicenseService ls; * @Quali..
2021.08.28 -
- hashCode() : 객체(Object) 의 해시코드란 객체의 고유한 정수값을 의미한다. : 객체의 메모리주소를 이용해서 해시코드를 생성한후 반환한다. : 두 객체가 같은 객체인지 확인하는 메소드 - equals() : 객체의 equals() 메소드는 == 와 같은 동일한 역할을 한다. : 두 객체의 내용이 같은지 확인하는 메소드 * 위 그림과 같이 객체의 hashCode() 와 equals()를 재정의를 해야 객체 내용을 비교할수 있다. * 메소드 재정의를 해야하는 이유는 HashSet, HashMap, HashTable과 같은 프레임워크에서 hashCode() 결과값인 해시코드 값이 다를경우 다른객체로 판단한다. 그렇기 때문에 재정의해줘야 한다.
Java hashCode(), equals()- hashCode() : 객체(Object) 의 해시코드란 객체의 고유한 정수값을 의미한다. : 객체의 메모리주소를 이용해서 해시코드를 생성한후 반환한다. : 두 객체가 같은 객체인지 확인하는 메소드 - equals() : 객체의 equals() 메소드는 == 와 같은 동일한 역할을 한다. : 두 객체의 내용이 같은지 확인하는 메소드 * 위 그림과 같이 객체의 hashCode() 와 equals()를 재정의를 해야 객체 내용을 비교할수 있다. * 메소드 재정의를 해야하는 이유는 HashSet, HashMap, HashTable과 같은 프레임워크에서 hashCode() 결과값인 해시코드 값이 다를경우 다른객체로 판단한다. 그렇기 때문에 재정의해줘야 한다.
2021.08.28