전체 글
-
ModelMapperJava 2021. 3. 4. 17:20
ModelMapper 다른 코드에서 ModelMapper 라는것을 보았는데 뭔지 궁금해서 찾아보았다. 왜 DTO 를 따로 만들어서 사용하는가 ? Entity 클래스를 생성할때 자바빈 규약을 생각하면서 getter/setter 를 생성하는 경우가 있는데 이렇게 되면 해당 클래스의 인스턴스 값들이 언제 어디서 변해야하는지 구분할수가 없어, 차후 기능 변경시 복잡해진다. 절대로 테이블과 매핑되는 Entity 클래스를 Reqeust/ Response 클래스로 사용해서는 안된다. Entity 클래스가 변경되면 여러 클래스에 영향을 끼치게 되는 반면 Request, Response 용 DTO 는 View 를 위한 클래스라 자주 변경이 필요하다. View Layer 와 DB Layer 를 철저하게 역할 분리하는게 좋..
-
Forward, Redirectetc 2021. 3. 4. 15:59
Forward, Redirect forward 와 redirect 을 언제마다 사용하는지 헷갈려서 찾아보았다. 웹에서는 작업중인 페이지를 이동하기 위해서는 2가지 페이지 전환기능을 제공한다. Forward 방식 페이지의 이동만 존재한다. 실제로 웹 브라우저는 다른 페이지로 이동했음을 알 수 없다. 웹 브라우저에서는 최초 호출한 URL 표시되고, 이동한 페이지의 URL 정보는 확인할 수 없다. 현재 실행중인 페이지와 forward에 의해 호출될 페이지는 Request, Response 객체를 공유하고 있다. 요청 정보를 그대로 전달하기에 사용자가 최초로 요청한 요청정보는 다음 URL 에서도 유효하다. ex) 게시판의 글쓰기나 회원가입 응답 페이지에서 새로고침을 한다면, 요청정보가 그대로 살아있기에 요청이 ..
-
form novalidateetc 2021. 3. 1. 19:04
form novalidate form의 유효성 검사를 하지 않는다. input type="email" 일 경우에 이메일 형식이 맞지 않으면 경고창이 뜨는데 novalidate 지정시 경고창 없이 바로 form 데이터를 전송한다. 익스플로러10, 파이어폭스, 오페라, 크롬에서만 사용가능하다. thymleaf 코드를 보는데 novalidate 가 뭔지 몰라서 찾아보았다. java 의 Validation 을 사용하면 필요도 없고 경고 창도 안 뜨게 하기 위해서 사용하는 것 같다.
-
@AuthenticationPrincipalJava 2021. 3. 1. 19:00
Principal 로그인한 사용자의 정보를 파라미터로 받고 싶을때 Principal 아래와 같이 객체로 받아서 사용할 수 있다. Principal 객체는 java.security 패키지에 속해있는 인터페이스이며 getName() 을 통하여 name 정보를 참조할 수 있다. @GetMapping() public String index (Model model, Principal principal) { if (principal == null) { model.addAtrribute("msg", "Hello"); } else { model.addAtrribute("msg", "Hello" + principal.getName()); } return "index"; } @AuthenticationPrincipal 다..
-
@InitBinderJava 2021. 2. 26. 17:30
@InitBinder Spring Validator 사용 시 @Valid 애노테이션으로 검증이 필요한 객체를 가져오기 전에 수행할 메소드를 지정해주는 애노테이션. - Binding ? 파라미터의 수집 @InitBinder public void initBinder(WebDataBinder webDataBinder){ // 무시할 필드명 명시 webDataBinder.setDisallowedFields("id"); // 허용할 필드명 명시 webDataBinder.setAllowedFields("id"); // 특정 Formatter 등록 webDataBinder.addCustomFormatter(); // 특정 CustomEditor 등록 webDataBinder.registerCustomEditor(Da..
-
java validationJava 2021. 2. 26. 16:17
Validation 애플리케이션 개발 시, 데이터 유효성을 검사하는 것은 애플리케이션 전체에서 발생한다. 입력값 검증 실패에 대해 원인을 쉽게 파악하고 이해하기 쉽게 적절한 API 응답을 해야한다. 목표를 달성하기 위해 Java의 데이터 유효성 검사 표준 기술인 Bean Validation을 사용한다. 문제점 애플리케이션 전체에 분산되어 있음 코드 중복이 심하다. 비즈니스 로직에 섞여있어 검사 로직 추적이 어렵고 복잡해진다. 해결법 Java 에서는 Bean Validation 이라는 데이터 유효성 검사 프레임워크를 제공한다. Bean Validation은 문제들을 해결하기 위해 다양한 제약을 도메인 모델에 애노테이션으로 정의할 수 있게한다. 이 제약을 유효성 검사가 필요한 객체에 직접 정의하는 방법으로 ..