[Spring] File Upload & Download

Featured image for [Spring] File Upload & Download

  0. 기존 포스팅 추가한 이유: 1. File Upload 가. pom.xml 나. servlet-context.xml id는 반드시 multipartResolver로 등록한다. 다. web.xml servlet이 Multipart를 처리하도록 설정. 설정 설명  <max-file-size> 업로드 하는 파일의 업로드 가능한 최대 파일 사이즈. 바이트 단위. -1로 설정 시 크기 제한 없음(default)  <max-request-size> 한번의 요청에 포함된 전체 Multipart 요청 데이터의 최대 크기. 바이트 단위. -1로 … 더 읽기

[Spring] ControllerAdvice

Featured image for [Spring] ControllerAdvice

1. ControllerAdvice 예외 발생 시 매번 try-catch를 해도 되지만 귀찮다. @ControllerAdvice은 비즈니스 로직과 예외 처리를 완전히 분리시켜줌과 동시에 원하는 곳에 원하는 방식으로 예외를 처리할 수 있게 해 준다. spring 6.1 버전부터는 throwExceptionIfNoHandlerFound의 default 값은 true라서 별도로 설정하지 않아도 된다. 이제는 모든 예외를 한 곳에서 처리할 수 있다! – 2024.07.24 추가 RestController + ControllerAdvice = RestControllerAdvice … 더 읽기

[Spring] Java Config

Featured image for [Spring] Java Config

1. Spring 설정 파일을 작성하는 방법 Spring 설정 파일을 작성하는 방법은 크게 두 가지다. XML을 사용하는 방법과 Java Config를 사용하는 방법이다. 방법 설명 장점 단점 XML XML 파일 안에 bean 객체를 정의하고 의존성 설정 시각적으로 객체 관계 이해 용이 XML 문법 필요, 타이핑 오류 가능 Java Config 설정을 Java 클래스로 작성 타입 안전성, IDE 지원으로 … 더 읽기

[Spring] AOP

Featured image for [Spring] AOP

1. AOP 기존 OOP에서는 핵심 로직을 여러 모듈에서 적용하는 데 있어 중복되는 코드가 발생한다. 핵심 관심(core concern)과 공통 관심 사항(cross-cutting concern)으로 나눠보고 그 관점을 기준으로 각각 모듈화 하겠다. 이때 여러곳에서 쓰이는 공통 관심 사항을 모듈화한 것을 Aspect라고 한다. 핵심 기능에서 부가 기능을 분리함으로써 핵심기능을 설계하고 구현할 때 객체지향적인 가치를 지킬 수 있도록 도와주는 개념. 가. … 더 읽기

[Spring] Interceptor

Featured image for [Spring] Interceptor

1. Interceptor란? Filter와 AOP와 유사하지만 다르다. 이들과 다르게 Login Session 검증, Header 검증, JWT Token 검증 등 웹과 관련된 기능을 담당한다.   Filter Interceptor AOP 구현 Jakarta.servlet.Filter org.springframework.web.servlet.HandlerInterceptor   관리 컨테이너 Servlet Container Spring Container Spring Container (Root) 적용 위치 web.xml servlet-context.xml execution으로 설정된 공통 코드 메서드 적용 대상 설정 url url execution에서 설정된 메서드(인자), … 더 읽기

[Spring] Filter

Featured image for [Spring] Filter

1. Filter란? 필터는 스프링의 독자적인 기능이 아닌 자바 서블릿에서 제공합니다. 공통적인 기능들을 서블릿이 호출되기 전후로 수행(전처리)되게 하고 싶다면 Filter를 사용하면 된다. 불필요하게 Controller까지 안 가도 된다. Spring은 Filter보단 Interceptor를 사용하길 권하는 것 같다. 인증, 인코딩, 로깅, 이미지 변환 등과 같은 작업을 수행할 때 많이 사용한다.   Filter Interceptor AOP 구현 Jakarta.servlet.Filter org.springframework.web.servlet.HandlerInterceptor   관리 컨테이너 … 더 읽기

[Spring] Spring Web Application의 동작 원리

Featured image for [Spring] Spring Web Application의 동작 원리

이 글에서는 예전에 포스팅한 “[Spring] 클라이언트의 요청이 처리되는 과정”에서 다룬 Spring 프로젝트가 초기화되는 과정을 보다 깊이 알아보았다. 1. 3 layered architecture https://www.ibm.com/kr-ko/topics/three-tier-architecture 애플리케이션을 3개의 논리적 및 물리적 컴퓨팅 계층으로 분리하는 3 계층 아키텍처는 기존의 클라이언트 서버 애플리케이션을 위한 주요 소프트웨어 아키텍처다. 기능의 논리적 및 물리적 분리가 가능하다. 3계층 아키텍처는 애플리케이션을 3개의 논리적이고 물리적인 컴퓨팅 계층으로 … 더 읽기

[DB] SubQuery

Featured image for [DB] SubQuery

부속 질의 (subquery) 부속질의란 하나의 SQL 문 안에 다른 SQL 문이 중첩된 질의를 말함. 다른 테이블에서 가져온 데이터로 현재 테이블에 있는 정보를 찾거나 가공할 때 사용함. 보통 데이터가 대량일 때 데이터를 모두 합쳐서 연산하는 조인보다 데이터만 찾아서 공급해주는 부속질의가 성능이 더 좋음. Join과 Subquery의 성능 차이는 case by case다. 데이터베이스 최적화, 인덱스 사용 여부, 쿼리 … 더 읽기

[DB] JOIN

Featured image for [DB] JOIN

1. JOIN 둘 이상의 테이블에서 데이터가 필요할 때 관련 있는 속성을 기준으로 복수의 테이블을 ‘관계’ 지어주는 연산. 그래서 관계형 데이터베이스의 꽃이라 부른다. 일반적으로 각 테이블의 PK 및 FK로 구성된 조인 조건을 포함하는 WHERE 절을 작성해야 한다. 가. JOIN의 종류 조인은 크게 일반적인 조인(혹은 내부 조인)과 외부 조인으로 나눌 수 있다. 2. INNER JOIN 두 테이블 … 더 읽기

[DB] VIEW

Featured image for [DB] VIEW

1. View 가. View란? 데이터베이스에 존재하는 ‘가상의 테이블’ 실제 행과 열을 가지고 있지만 데이터를 저장하고 있지 않고 SQL만 저장한다. MySQL에서는 단지 다른 테이블이나 View의 데이터를 보여주는 역할만 수행한다. 복잡한 Join이나 Subquery를 View를 사용해서 단순하게 만들 수 있다. 나. 장점 예를 들어, 다음과 같은 복잡한 쿼리를 가지고 있다고 가정해 본다. (실제로는 더 복잡하고 반복되겠죠?) 뷰를 사용하면 … 더 읽기