org.springframework.security.filterChains web.xml ->해당 오류는 필터가 등록이 된 후 bean을 등록하고 시큐리티 설정파일을 읽어야하는데 보동 저 xml 설정파일을 위에 같이 적는 경우가 많았다 밑으로 빼주니 해결. 빈등록 후 설정파일을 읽음. servlet-context.xml org.springframework.beans.factory.BeanCreationException -> context:component-scan과 dao에서 @Repository를 같이 혼용하여 사용하는 경우 빈이 2번 등록된다. 따라서 둘 중 하나만 사용하도록 하자... 나는 context-component를 주석처리 하였다 물려받은 프로젝트 모두 dao에 @Repository가 적혀..
| @InitBinder란? " Spring Validator를 사용 시 @Valid 어노테이션으로 검증이 필요한 객체를 가져오기 전에 수행할 method를 지정해주는 어노테이션이다." 기존에 @Valid OR @Validated 애노테이션으로 데이터 검증을 위해 Validator interface를 구현한 class를 만들고 validate() 메소드를 직접 호출해 사용했는데, 이번에는 @InitBinder 어노테이션으로 직접 호출하지 않고 스프링 프레임 워크에서 호출하는 방법에 대해서 알아보겠습니다. Ex 01) StrudentController에서 활용 @Controller pulbic calss StudentController { @RequestMapping("/studentForm") publi..
| @SessionAttributes란? 모델(Model) 정보를 HTTP 세션에 저장해주는 애노테이션입니다. HttpSession을 직접 사용할 수도 있지만 이 애노테이션에 설정한 이름에 해당하는 모델 정보를 자동으로 세션에 넣어줍니다. @ModelAttribute는 세션에 있는 데이터도 바인딩합니다. 여러 화면(또는 요청)에서 사용해야 하는 객체를 공유할 때 사용합니다. ex) 장바구니, 여러 화면에 걸쳐 나눠진 회원가입 등 또한 @SessionAttributes를 사용하면 @ModelAttribute OR model.addAttribute()를 활용하여 객체를 저장할 경우 세션에 저장이 되도록 지정할 수 있습니다. ( * 이러한 경우에는 세션이 제거되거나 SessionStatus 객체를 사용하여 명..
| Custom Annotation(커스텀 애노테이션)이란? 메타 애노테이션 조합 애노테이션 커스텀 애노테이션 선언 public @interface userAnnotation{} // 커스텀 애노테이션 선언 - @interface와 함께 사용할 이름을 적어주면 커스텀 애노테이션이 완성됩니다. - 이 애노테이션을 클래스,필드,메서드 같은 곳에 붙이션 애노테이션으로써 껍데기 같은 역할은 할 수 있습니다. //커스텀 애노테이션 사용 예 @userAnnotation public class explain{ public static void main(String[] args){ System.out.println("Hello World"); } } 하지만, (커스텀 애노테이션 로직이 작성 되어있다는 가정 하) 위와 ..
AuditEntityListener는 Spring data jpa에서 구현한 EntityListener이다. 쉽게말해 Java에서 ORM 기술은 JPA를 사용하여 도메인을 관계형 데이터베이스 테이블에 매핑할 때 공통적으로 도메인들이 가지고 있는 필드나 컬럼들이 존재합니다 대표적으로 새엇ㅇ일자 수정일자 식별자 같은 필드 및 컬럼이 있습니다. 도메인마다 공통으로 존재한다는 의미는 결국 코드가 중복된다는 말과 일맥상통 합니다. 그래서 JPA에서는 Audit 이라는 기능을 제공하고 있습니다. @PrePersist, @PreUpdate 설정을 통해 엔티티가 영속화 되기 이전에 AuditingHandler를 통해 생성일, 생성자, 수정일, 수정자를 자동으로 찾아서 설정한다. | Audit이란? Spring Data..
스프링 프레임워크에서는 REST 서비스의 Endpoint를 호출할 수 있도록 크게 2가지 방식인 동기와 비동기 REST Client를 제공합니다. RestTemplate - spring 3부터 지원 되었고 REST API 호출이후 응답을 받을 때까지 기다리는 동기방식입니다. AsyncRestTemplate - spring 4에 추가된 비동기 RestTemplate입니다. - spring 5.0에서는 deprecated 되었습니다. WebClient - Spring 5에 추가된 논블럭, 리엑티브 웹 클라이언트로 동기, 비동기 방식을 지원합니다. RestTemplate는 Spring에서 제공하는 다른 여러 Template class ex)JdbcTemplate, RedisTemplate 와 동일한 원칙에 따..
| @ModelAttribute 이란? 클라이언트가 전송하는 여러개의 파라미터들을 1:1로 객체에 바인딩 하여 다시 View로 넘겨서 출력하기 위해 사용되는 Object입니다. 매핑시키는 파라미터의 타입이 객체의 type과 일치하는지를 포함한 다양한 검증(Validation) 작업이 추가적으로 진행됩니다. ( 예를들어, 게시물 번호를 저장하는 int형 index 변수에 "1"이라는 String 값을 넣으면 BindException 발생 ) @RequestBody의 경우 Json이나 XML을 Jackson과 같은 MessageConverter를 사용하면 변환하지만, 이 어노테이션은 여러 개의 파라미터를 바로 java bean 객체로 mapping 시킵니다. 즉, JSP에서 form 태그를 통하여 전달받은 ..
Spring에서 API구현 시 주로 사용되는 @RequestBody, @ResponseBody ,@ModelAttribute어노테이션의 개념에 대해 확실하게 알고 넘어가보자. ex) Web Page에서 json으로 request한 파라미터들을 java에서 받으려면 java Object type으로 변환이 필요하다. 마찬가지로 response시에도 java object에서 json으로 변환이 필요로하다. web에서 받은 data는 java에서 사용 시 : web -> (javaObject로 변환 ) - > java에서 활용 java에서 web으로 data 보낼 시 : java -> ( json Object로 변환) -> web 이러한 작업들을 해주는 어노테이션이 바로 @RequestBody와 @Respon..