본문 바로가기

Spring Framework/Spring11

롬복 (Lombok) Java의 라이브러리로 반복되는 메소드를 Annotation을 사용해서 자동으로 작성해주는 라이브러 컴파일 과정에서 Annotation을 이용해서 코드를 생성한다. Lombok Annotation 종류 @Getter , @Setter Java Bean 규약에 맞춰 setter, getter 메소드를 자동으로 생성해줍니다. 기본적으로 public 으로 생성되며, AccessLevel을 명시하여 접근 제어자를 설정할 수 있습니다. 롬복이 생성해주는 메소드와 동일한 메소드가 존재한다면 생성하지 않습니다. @NonNull 필드나 메소드, 생성자의 매개변수가 null 인지 check 해줍니다. null일 경우, NullPointerException를 발생시킵니다. @ToString toString 메소드를 자동으.. 2022. 6. 9.
스프링 MVC - 예외처리 (REST API) JAVA에서는 예외 처리를 하기 위해서 try-catch문을 사용해 예외를 처리합니다. 프로젝트를 진행하다보면 수많은 예외상황이 발생하기 때문에 try-catch문이 거의 모든 코드에 들어가게 되는데 이는 코드의 가독성을 떨어뜨리는 요소 중 하나입니다. Spring에서는 이러한 문제를 해결하기 위해 에러 처리라는 공통 관심사(Cross-cutting Concerns)를 메인 로직에서 분리하여 처리하고자 하였고, 이를 위해서 예외 처리 전략을 추상화한 HandlerExceptionResolver 인터페이스를 고안하였습니다. public interface HandlerExceptionResolver { ModelAndView resolveException(HttpServletRequest request, H.. 2022. 6. 9.
스프링 MVC - Filter , Interceptor Filter와 Interceptor 더불어 AOP까지 모두 공통 관심사를 처리하는데 사용하는 기능들입니다. Filter 와 Interceptor는 웹 적인 요소(URL,Protocol 등)를, AOP는 비즈니스적 측면(Method,Annotation 등)을 다룬다는 점에서 차이가 있습니다. 이렇게 각자 실행되는 시점이나 할 수 있는 것들에 차이가 있기 때문에 요구사항에 맞춰 알맞은 기능을 사용하면 됩니다. 다만 요새는 Filter보다는 interceptor 가 많이 쓰이는 추세라고 합니다. Filter 스프링 외부의 서블릿에서 제공하는 공통 처리 기능 흐름의 가장 앞에서 요청과 응답을 거른 뒤 정제하는 역할을 합니다. 요청이 DispatcherServlet에 도착하기 전에 스프링 컨텍스트 외부에서 요청을.. 2022. 6. 8.
스프링 MVC - HTTP Request,Response 스프링 기본 HTTP 요청 매핑 Controller 어노테이션 클래스 단위에 추가하며, 자동으로 빈 등록을 해줍니다. Controller 어노테이션 종류 @Controller 반환 값이 String 이면 뷰 이름으로 인식하고 뷰를 찾은 후 뷰를 렌더링합니다. 응답 값이 기본적으로 HTML을 주도록 되어 있습니다. @RestController HTTP 메시지 바디에 바로 입력 응답 값으로 Rest API 요청에 대한 응답(주로 JSON)을 주도록 되어있습니다. @ResponseBody + @Controller import org.springframework.web.bind.annotation.RestController; @RestController public class TestController {} 매.. 2022. 6. 8.
스프링 MVC - 전체 구조 MVC 패턴이란? 하나의 애플리케이션, 프로젝트를 구성할 때 그 구성요소를 세가지의 역할로 구분한 패턴으로 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있다. Model 로직 안에서 이동하고 있는 데이터 View 화면은 화면의 역할만 사용자 인터페이스 요소 Controller 비즈니스 로직을 처리하고 모델과 뷰를 응답으로 준다 데이터와 비즈니스 로직 사이의 상호동작을 관리 스프링 MVC 구조 핸들러 조회: 핸들러 매핑을 통해 요청 URL에 매핑된 핸들러(컨트롤러)를 조회 핸들러 어댑터 조회: 핸들러를 실행할 수 있는 핸들러 어댑터를 조회 핸들러 어댑터 실행: 핸들러 어댑터를 실.. 2022. 6. 8.
Spring Validation Validation이란? 유효성 검증 주로 사용자 또는 타 서버의 요청 내용에 잘못된 내용이 있는지 확인하는 행위를 의미 Validation 종류 데이터 검증 필수 데이터의 존재 유무 문자열의 길이나 숫자형 데이터의 값의 범위 email, 신용카드 번호 등 특정 형식에 맞춘 데이터 비즈니스 검증 서비스 정책에 따라 데이터를 확인하여 검증 경우에 따라 외부 API를 호출하거나 DB의 데이터까지 조회하여 검증하는 경우도 존재 Spring의 Validation 스프링은 웹 레이어에 종속적이지 않은 방법으로 검증을 하려고 의도하고 있으며 주로 두가지 방법을 활용하여 검증을 진행한다. Java Bean Validation Java Bean 기반으로 개별 데이터를 검증 가장 많이 활용되는 방법 중 하나 Java B.. 2022. 6. 7.
Data Binding Data Binding 사용자나 외부 서버의 요청 데이터를 특정 도메인 객체에 저장해서 우리 프로그램의 Request에 담아주는 것을 뜻함 요청 데이터를 편하게 내가 원하는 객체로 바꿔주는 역할이라고 보면 될 듯 주로 사용하는 방식 Converter 인터페이스 S 타입을 받아서 T 타입으로 변환해주는 인터페이스 package org.springframework.core.convert.converter; public interface Converter { T convert(S source); } 웹MVC할 때 요청 데이터를 내가 원하는 객체로 변환할 때 사용한다. 작성한 Converter는 빈 등록 해주어야 한다. 예시 // 요청 GET /user-info x-auth-user : {"id":123, "n.. 2022. 6. 7.
Spring AOP(관점 지향 프로그래밍) AOP란? = Aspect Oriented Programming 여러 객체에서 공통적으로 사용하고 있는 기능을 분리해서 모듈화하고 재사용하는 프로그래밍 기법 핵심 기능과 공통 기능의 구현을 분리하여 핵심 기능의 코드 수정없이 공통 기능 적용 가능 여러 클래스, 메서드에 공통적으로 나타나는 코드들을 Concern 이라한다. 각 클래스에 있는 Crosscutting Concerns(흩어진 관심사)를 Aspect로 모듈화하고 핵심적인 비즈니스 로직에서 분리하여 재사용하겠다는 것이 AOP의 취지이다. 대표적으로 인증, 트랜잭션 관리, 로깅 등과 같은 인프라 로직을 AOP로 처리한다. 스프링은 프록시 기반 AOP를 지원한다. AOP 적용 방식 컴파일 시점에 코드에 공통기능을 삽입 AOP 개발 도구가 소스 코드를 .. 2022. 6. 7.
DI 정리 스프링 컨테이너 생성 및 종료 ApplicationContext 인터페이스 이용 자주 사용하는 구현체 AnnotationConfigApplicationContext : 어노테이션 이용방식 GenericXmlApplicationContext : XML 이용방식 컨테이너에 두 개 이상의 설정 파일 등록 방법 사용하고자 하는 설정 파일들을 매개변수로 전달 하나의 설정 파일에 다른 파일들을 @Import 로 가져오기 import org.springframework.context.annotation.AnnotationConfigApplicationContext; public class Main{ public static void main(String[]args) { // 스프링 컨테이너 생성 // 매개변수로 여러.. 2022. 6. 6.
Spring Framework 소개 1. Spring Framework 란? 자바 엔터프라이즈 애플리케이션 개발을 단순하게 해주는 오픈 소스 애플리케이션 프레임워크 구조가 잘 잡히고 유지보수하기 쉬우며 테스트하기 좋은 애플리케이션 개발 인프라를 제공 이로 인해 개발자는 애플리케이션 비즈니스 로직에 더욱 집중할 수 있게 되어 생산성이 좋아진다. 여러 모듈로 구성되어 있다. 애플리케이션 개발에 필요한 기능을 가진 모듈을 골라서 사용할 수 있다. 핵심 컨테이너 spring-core,spring-beans : DI기능과 IoC 컨테이너 구현 spring-expression : 애플리케이션 객체설정에 사용하는 SpEL 지원을 제공 AOP와 계측 관점 기반 프로그래밍과 클래스 계측을 지원 spring-aop : AOP기능 spring-instrume.. 2022. 6. 5.
Spring 등장 배경 Spring 등장 배경 1. CGI 의 등장 현재 대부분의 웹페이지들이 동적 웹페이지일 정도로 동적으로 무언가를 보여준다는게 흔하디 흔한 기술이 되었지만, 과거 웹이 처음 등장했을 때는 HTML이나 이미지같은 정적인 데이터만을 처리해주는 웹서버 뿐이 없었기 때문에 HTTP 요청에 대해서 항상 동일한 정적인 페이지만을 보여줄 수 밖에 없었다. Apache HTTP Server가 이러한 정적 웹서버이다. 이러한 한계를 극복하고 사용자에 따라 혹은 상황에 따라 다르게 보여주기 위해 개발된 것이 CGI (Common Gateway Interface)이다. CGI는 아래와 같은 구조를 가지고 있다. 클라이언트가 웹서버로 요청 웹서버는 요청에 들어있는 주소가 CGI 프로그램에 대응하는지 확인 대응하는 프로그램이 있.. 2022. 6. 2.