[Spring Boot] JUnit5 @RequiredArgsConstructor 사용
Try & Error Log 2023. 11. 22. 13:39

JUnit5의 테스트 코드 실행 환경에서 MockMvc의 DI를 Autowired 말고 final로 주입받기 위해서 @RequiredArgsConstructor을 사용하기 위해 작성하였고 Import도 하였다. 하지만 다음과 같은 오류가 발생되었다. java: java.lang.NoSuchFieldError: Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field 'com.sun.tools.javac.tree.JCTree qualid' 에러가 발생하는 이유는 JUnit5가 DI를 스스로 지원하기 때문에 JUnit이 생성자에 다른 의존성을 주입하려고 먼저 개입 하기 때문이다.JUnit 5가 DI(Dependency Injectio..

Repository
BackEnd/Spring 2023. 11. 22. 11:21

리포지터리는 엔티티에 의해 생성된 DB 테이블에 접근하는 메서드들을 사용하기 위한 인터페이스 데이터 처리를 위해서는 테이블에 어떤 값을 넣거나 값을 조회하는 등의 CRUD(CREATE, READ, UPDATE, DELETE)가 필요하다. 이 때 이러한 CRUD를 어떻게 처리할지 정의하는 계층이 바로 리포지터리이다. 내가 리포지터리와 테스트코드를 작성하면서 놀란 점은 바로 테스트 코드를 작성할 때 JpaRepository를 상속한 ~ 객체가 생성될 때 findBy + 엔티티 속성명 (findBySubject)과 같은 리포지터리 메서드를 작성하면 해당 속성의 값으로 데이터를 조회할 수 있는 게 놀라웠다.. 아니 이렇게 굉장한 기능이 있다니.. 스프링 놀랍다.. 아니 C#에서는 이러한 메서드들을 직접 구현을 ..

스프링 부트 Validation
BackEnd/Spring 2023. 11. 17. 02:53

Lombok @Data 어노테이션은 @Getter/ @Setter/ @ToString/ @EqualsAndHashCode/ @RequiredArgsConstructor를 합친 것 Spring Boot @Validated어노테이션 이 클래스를 구성하는 메서드 중에서 1개라고 notblank notnull... 을 사용하면 지우면 안 된다. @Valid `주로 메서드의 매개변수에 사용되며, 주로 스프링 MVC에서 컨트롤러의 메서드에 적용된다.` @Validated `주로 메드나 클래스에 사용되며, 스프링 MVC 외의 다른 레이어에서도 사용할 수 있다.` @NotBlank 해당 어노테이션이 붙은 요소가 null이 아니고 공백 문자를 제외한 적어도 하나의 문자를 포함하고 있음을 검증한다. @NotNull 말 그..

스프링 부트 Controller (1)
BackEnd/Spring 2023. 11. 14. 20:53

나는 Java를 배우기 전에는 Java가 그냥 그런 언어라고 생각했다. 하지만 자바의 기초를 습득하고 스프링을 접할 때 정말 아름다운 언어잖아!라고 다시 생각했다.. 스프링 부트의 Controller에 대해 잠시 써보고자 한다. 먼저 Spring Boot는 Java 기반의 웹 애플리케이션을 쉽게 개발할 수 있도록 도와주는 프레임워크다. 그중 @Controller 어노테이션은 Spring에서 해당 클래스가 웹 요청을 처리하는 컨트롤러 클래스임을 나타낸다. @Controller public class ArticleController { } 저렇게 어노테이션을 붙여주기만 하더라도 스프링 부트에서 이게 컨트롤러구나 인식한다는 뜻이다..! 아니.. 자바는 C#이랑 비슷한 객체지향 언어가 아니였나..? 저런 식으로..