본문 바로가기

스프링

(28)
Spring MVC 미디어타입, 헤더, 매개변수 매핑 요청 매핑하기 미디어 타입과 헤더, 매개변수에 맞게 요청을 매핑할 수 있다. 원하는 타입의 요청만 처리하기 JSON 요청만 처리하고 싶을 경우 Annotaiton에 consumes 설정으로 원하는 타입을 설정할 수 있다. VALUE는 String을 리턴한다는 의미이다. 테스트 코드에서 contentType을 JSON으로 설정하고 테스트하면 테스트가 성공한다. APPLICATION_JSON, APPLICATION_JSON_VALUE 등 JSON으로만 설정하면 모두 가능하다. Content Type을 주지 않을 경우 Content-Type 헤더를 설정하지 않고 테스트 시 415(UnsupportedMediaType) 상태 응답이 발생한다. 원하는 타입으로 응답하기 응답을 TEXT로 할 경우 테스트에서 Acc..
Spring MVC HTTP Method(@RequestMapping), URL 패턴 HTTP Method와 URL 패턴 Spring Web MVC에서 사용하는 HTTP Method 매핑 방법과 URL 패턴에 대해 알아본다. 먼저 자주 사용하는 HTTP Method에 대해서 알아보자. HTTP Method GET 클라이언트가 서버의 리소스를 요청할 때 주로 사용하는 메서드이다. 브라우저에 기록이 남으며 URL에 전송하는 데이터가 표시되므로 민감한 데이터를 보내면 안 된다. 멱등성 O, 캐시 가능 HEAD GET 요청과 같지만 응답에 본문이 없고 헤더만 존재한다. 헤더를 통해 본문 정보를 유추할 때나 응답 상태 코드를 확인만 필요할 때도 유용하다. 멱등성 O, 캐시 가능 POST 클라이언트가 서버의 리소스를 수정하거나 새로 만들 때 사용한다. 서버에 리소스를 수정하거나 새로 만들 때 보내는..
스프링 부트 자동설정 @SpringBootApplication @SpringBootApplicaiton SpringBootApplication Annotation의 Meta Annotation인 @ComponentScan과 @EnableAutoConfiguration에 대해 알아본다. 스프링 부트로 프로젝트를 생성하여 메인 클래스에 가면 @SpringBootApplication annotation이 있다. 이 annotation을 확인해보면 아래와 같이 @SpringBootConfiguration, @EnableAutoConfiguration, @ComponentScan이 존재한다. @ComponentScan ComponentScan에서는 지정된 타켓 패키지 이하를 스캔하며 @Component Annotation이 붙어 있는 대상들을 빈을 등록해준다. @Contro..
SpringBoot와 Vue.js 연동하기 Vue.js 프로젝트 빌드 시 스프링 부트 프로젝트 resouces/static 이하에 빌드되게 설정하는 게시글 SpringBoot 프로젝트 생성 스프링 부트 스타터 해당 링크를 들어가면 스프링 부트 프로젝트를 생성할 수 있다. Spring Initializr를 이용하여 위와 같이 Spring Web만 의존성 추가한 후 Generate를 클릭하여 프로젝트 파일을 다운로드한다. 다운로드한 프로젝트 파일을 인텔리 J로 실행시킨 후 서버를 띄워 프로젝트가 정상 동작하는지 확인한다. 앱이 정상적으로 구동되는 것을 확인하였다. 그럼 이제 Vue프로젝트를 다운로드한다. Vue 프로젝트 생성 Node.js 공식사이트 우선 Vue 프로젝트를 생성하기 위해선 Vue CLI가 필요하고 Vue CLI를 다운로드하기 위해 N..
스프링 AOP AOP(Aspect-Oriented Programming) OOP를 보완하는 수단으로, 흩어진 Aspect를 모듈화 할 수 있는 프로그래밍 기법이다. 왼쪽 그림의 A, B, C Class에서 같은 색의 띠가 공통되는 로직이라고 생각해보자. 만약 노란색 띠의 로직의 문제가 생긴다면 A, B, C Class 제각각 수정을 해야 한다. 공통되는 로직들을 오른쪽 그림처럼 한 곳에 모아 모듈로 간편하게 만들어 사용하는 것을 AOP라고 한다. 보안, 로깅, 트랜잭션 등에 주로 사용하는 것으로 알고 있다. AOP의 주요 개념 Aspect Advice와 PointCut을 합친 개념이다. Advice 해야 할 일들을 담고 있는 모듈 Target 적용이 되는 대상 PointCut 어드바이스를 어디에 적용을 해야 하는지에 ..
SpEL(Spring Expression Language) SpLE(Spring Expression Language) 스프링 3.0부터 지원 객체 그래프를 조회하고 조작하는 기능을 제공한다. Unified EL과 비슷하지만, 추가적으로 메서드 호출, 문자열 템플릿 기능을 제공한다. SpLE은 모든 스프링 프로젝트 전반에 걸쳐 사용할 EL로 만들었다. 예제 application.properties나 빈으로 등록된 클래스의 값들을 SpLE를 통해 받아올 수 있다. 값을 사용할 수 있는 다양한 방법들이 존재한다. 빨간 박스처럼 properties값들을 받아올 수 있다. 그리고 파란 박스에서는 빈으로 등록된 데이터를 받아온 것을 알 수 있다. #{ }으로 표현식 을 사용할 수 있고, ${ }으로 property를 참고할 수 있다. 참고 #{ ${ } }이런 식으로 표현..
데이터 바인딩 추상화: Editor, Converter, Formatter 데이터 바인딩 추상화 기술적인 관점: 프로퍼티 값을 타깃 객체에 선정하는 기능 사용자 관점: 사용자가 입력한 값을 애플리케이션 도메인 모델에 동적으로 변환해 넣어주는 기능. 입력값은 대부분 문자열이다. 그 값을 int, log, Boolean 등 심지어 Event, Book 같은 도메인 타입으로도 변환해서 넣어주는 기능이다. EventEditor Event 도메인을 생성한다. EventController에서 @PathVariable로 Event를 파라미터로 받아온다. test에서 mock객체를 이용하여 url에 event/1로 요청을 보낸다. editor를 매칭 하지 못한다는 에러가 발생하는 것을 알 수 있다 event/1에서 1을 event로 매핑해야 하지만 이 매핑은 Editor가 필요하다. Edit..
Validation 추상화 Validation 추상화 애플리케이션에서 사용하는 객체 검증용 인터페이스이다. 특징 모든 계층(웹, 서비스, 데이터)에서 사용 가능하다. Data Binder에 들어가 바인딩할 때같이 사용되기도 한다. Validator를 만들어서 사용하기 Event 클래스를 만들고 Getter, Setter를 붙여주었다. EventValidator를 만들어 Validator를 구현한다. supports는 어떤 타입의 객체를 검증할 때 사용할 것인지 결정하는 것이다. Event.class를 검증할 것이므로 Event.class와 파라미터를 비교해준다. validate는 실제 검증 로직을 구현하는 곳이다. ValidationUtils를 이용하여 title field가 비어있으면 에러를 확인하였다. Application R..