본문 바로가기

개발 이론/Spring21

[Spring] HandlerMethod 스프링 시큐리티 기능을 인터셉터로 구현할 수 있다는 거를 공부하다가 HandlerMethod개념이 나와서 공부해본다... 아니 코드 5줄 읽으면 공부해야하는 개념이 2-3개씩 나오는게 정상이겠지..?? HandlerMethod @RequestMappin과 같은 @GetMapping, @PostMapping등 붙은 메서드의 정보를 추상화한 객체이다. 그자체가 실행가능한 객체가 아니라 메소드를 실행하기 위해 필요한 정보를 담고 있는 객체이다 빈객체, 메서드 메타정보, 메소드 파라미터 정보, 메서도 어노테이션 정보, 메소드 리턴값 메타정보 디스패처 서블릿은 애플리케이션 실행될때 모든 컨트롤런의 빈의 메서드를 살펴서 매핑 후보가 되는 메서드를 추출한뒤, 이를 HandlerMethod형태로 저장해둔다. 그리고 실.. 2023. 11. 16.
[Spring] HandlerMethodArgumentResolver와 WebMvcConfigurer 아아 저거 어디서 많이 봤는데.. 분명 인강들으면서 리졸버라는 말 썻던거같은데... 찾아보니 역시나 배웠던거...나의 기억련이란 정말 하루살이 같구나.. HandlerMethodArgumentResolver 컨트롤러 메서드에서 특정 조건에 맞는 파라미터가 있을때 원하는 값을 바인딩해주는 인터페이스이다. 엥??그게 뭔소리여... 그니까 컨트롤러 메서드를 만들때 @RequestBody라든지 @PathVariable를 사용한적이 있을것이다. 이때 HandlerMethodArgumentResolver가 HTTP메세지를 처리해주는 것이다. public interface HandlerMethodArgumentResolver { boolean supportsParameter(MethodParameter paramet.. 2023. 11. 16.
[Spring] ResponseEntity, HttpEntity HandlerMethodArgumentResolver를 분명 공부했었는데 까먹어...서 공부하다가 HttpEntity를 보았다. 이게 뭐지..?? ResponseEntity처럼 생겼느데?? 라는 의문으로 한번 알아보기 시작하였다 일단 먼저 말하자면 ReponseEntity가 HttpEntity를 상속한 것이다 HttpEntity는 스프링 프레임 워크에서 제공하는 클래스로 HTTP요청이나 응답에 해당하는 HttpHeader와 HttpBody를 포함하는 클래스이다 public class HttpEntity { private final HttpHeaders headers; @Nullable private final T body; } 여기서 ResponseEntity와 RequestEntity가 HttpEnti.. 2023. 11. 16.
[Spring] flyway - BaseJavaMigration? flyway는 sql파일뿐만 아니라 java 파일또한 migration 가능하다. 파일명은 이전에 sql파일이름 짓을때 처럼 해주면 되고 경로는 src/java/db/migration경로를 생성해줘 안에 java파일을 생성하면된다 import org.flywaydb.core.api.migration.BaseJavaMigration; import org.flywaydb.core.api.migration.Context; import java.sql.ResultSet; import java.sql.Statement; public class V3__bulk_update_books extends BaseJavaMigration { @Override public void migrate(Context context).. 2023. 11. 13.
[Spring] flyway?? DB 마이그레이션?? 아 또 모르는 개념 나왔다. flyway?예? 이게 뭐죠..?? 뭐 db 마이그레이션 한다구요?에?? 지금까지 내가 이 개념을 만났을때 반응이다. 자자 천천히 알아보자 일단 flyway에 대해서 간단히 말하자면 DB이력관리를 도와주는 라이브러리 라고 생각하면 된다. 우리가 자주 사용하는 git은 소스 코드의 이력을 관리한다. flyway도 마찬가지다. DB에 대한 이력관리 뿐만 아니라 마이그레이션, 테스트 코드 실행시에도 도움이 된다. Migration?? 일단 migration이 뭔가.?? 간단하게 Migration이란 DB스키마에 발생한 변경사항을 DB에 적용하는 것이다. 운영환경, 개발환경, 로컬환경 등 다양한 환경에서 각자의 db를 갖고 있는데 모든 환경에서의 DB스키마를 맞추기 위함 인것이다. .. 2023. 11. 13.
[Spring] @ModelAttribute와 @RequestBody에 대해 컨트롤러로 들어오는 데이터 객체를 매핑하는 어노테이션으로 @ModleAttribute와 @RequestBody가 있다. @ModelAttribute는 여러개의@RequestParam을 하나의 객체로 매핑할때 쓰이고 @RequestBOdy는 Json형태로 들어오는 body를 객체로 매핑할때 쓰인다. 스프링은 이 두 어노테이션을 통해 클라이언트가 보내주는 데이터를 객체로 역직렬화 할 수 있다 다만 데이터를 객체로 역직렬화해주는데는 필요한 규칙들이 있다. 이 규칙을 지키지 않으면 정상적으로 객체 매핑이 될 수 없다 빈 생성자가 있어야한다 두 어노테이션모두 역직렬화 과정에서 기본적으로 아무 필드도 할당하지 않는 빈 생성자를 호출해서 객체를 생성한다. 물론 빈 생성자만 있다고 되는 것은 아니다. 빈 생성자를 만든.. 2023. 11. 9.
728x90