[Spring] @ResponseBody와 @ModelAttribute 차이점
·
스터디/Spring
@RequestBody @RequestBody는 클라이언트가 전송하는 Json(application/json)이나 xml 형태의 HTTP Body내용을 Java Object로 변환시켜준다 (POST / PUT). 따라서 Body가 존재하지 않는 GetMapping에 RequestBody를 사용하면 에러가 발생한다. Spring에서 관리하는 MessageConverter를 활용하여 Java 객체로 변환된다. @ModelAttribute @ModelAttribute는 클라이언트가 전송하는 multipart/form-data 형태의 요청 데이터(GET) 내용과 HTTP 쿼리 파라미터들을 Setter 메서드를 통해 1:1로 객체에 바인딩한다. 매핑시키는 파라미터의 타입이 객체의 타입과 일치하는지를 포함한 다양한..
[Spring] @NotNull @NotEmpty @NotBlank 차이점
·
스터디/Spring
서버에서 클라이언트의 요청에 대하여 유효성을 검증해야하는 부분이 필요하다. 이때 스프링에서 @Valid 라는 어노테이션으로 검증을 수행하는데 Valid 중에서 위 세가지 어노테이션을 비교해보고자한다. 차이점 @NotNull @NotEmpty @NotBlank Null X X X 길이가 0인 값(ex: "") O X X 공백(ex: " ") O O X 위 세가지 어노테이션은 bean validation (Hibernate Validation)에서 제공하는 표준 Validationdmfh 클라이언트의 파라미터 중 null 값인지 체크하거나 공백 유무를 체크하는데 사용된다. @NotNull의 경우 Null값은 허용하지 않지만 "", " " 은 허용한다. 따라서 위 어노테이션은 정확히 구분해서 상황에 따라 적절..
[Spring] 싱글톤 패턴 (Singleton pattern)
·
스터디/Spring
1. 싱글톤 패턴이란 (Singleton pattern) 소프트웨어 디자인 패턴에서 싱글톤 패턴을 따르는 클래스는 , 생성자가 여러 차례 호출되더라고 실제로 생성되는 객체는 1개이고 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴한다. Why? 싱글톤 패턴을 왜 사용할까? 만약 DI 컨테이너가 매번 클라이언트에서 요청이 들어올때마다 각 로직을 담당하는 오브젝트를 생성한다고 가정해보자. 요청이 엄청 많은 트래픽 사이트에서는 계속 객체를 생성하게되어 메모리 낭비가 심해지고 서버가 감당하기 힘들어진다. 그래서 싱글톤 패턴을 사용한다! 2. 싱글톤 패턴 구현 2-1. DI Container AppConfig appConfig = new AppConfig(); // 호출 할 때마다 다른 객체..
[Spring] Spring Container, BeanFactory 그리고 ApplicationContext
·
스터디/Spring
스프링에서 가장 중요한 개념인 Container, BeanFactory 그리고 ApplicationContext 에 대해서 알아보고자 한다. 스프링에서 BeanFactory 와 ApplicationContext는 IoC Container 역할을한다. Spring Container 스프링에서 DI를 이용하여 애플리케이션을 구성하는 여러 빈들의 생명주기와 애플리케이션의 서비스 실행등을 관리하며 생성된 인스턴스들에게 기능을 제공하는 것. 컨테이너에 적절한 설정만 있으면 프로그래머의 개입 없이 작성된 코드를 컨테이너가 빈을 스스로 참조한 뒤 알아서 관리한다. 스프링 컨테이너는 주로 BeanFactory와 ApplicationContext 두 가지로 다룬다. *빈(Bean) : 스프링이 제어권을 갖고 직접 생성 ..
[Spring] PSA (Portable Service Abstraction) 란?
·
스터디/Spring
PSA (Portable Service Abstraction) 잘 만든 인터페이스(PSA)를 가지고 나의 코드가 바뀌지 않도록 다른 기술로 간편하게 바꿀 수 있도록 확장성을 갖는 것이다. Spring은 Spring Web MVC, Spring Transaction, Spring Cache 등의 다양한 PSA를 제공한다. 1. Spring Web MVC 일반 클래스에 @Controller 애노테이션을 사용하면 요청을 매핑할 수 있는 컨트롤러 역할을 수행하는 클래스가 된다. 또한, 의존성 설정에서 코드 한 줄만 바꾸면 tomcat이 아닌 netty기반으로 실행되게 변경할 수 있다. 이러한 어노테이션과 dependency 등을 통해서 복잡한 인터페이스를 가지고 사용자가 웹 기술 스택을 편리하게 바꿀 수 있도록..
[Spring] AOP(Aspect Oriented Programming)란?
·
스터디/Spring
AOP란? AOP(Aspect Oriented Programming)는 직역하면 "관점지향 프로그래밍"이다. 한 마디로 정의하자면 AOP는 흩어진 코드를 한 곳으로 모으는 코딩 기법. 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하겠다는 것이다. 여기서 모듈화란 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것을 말한다. AOP를 사용하면 공통 관심 사항과 핵심 관심 사항을 분리하여 로직을 구현 할 수 있다. (공통 관심 사항을 AOP로 구현) -AOP 사용 장점 핵심 관심 사항과 공통 관심 사항 분리 가능 핵심 관심 사항을 깔끔하게 유지 가능 공통 관심 사항 로직 변경 용이 원하는 적용 대상 선택 가능 EX) AOP 등록 예시코드 - TimeTr..