
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..
리포지터리는 엔티티에 의해 생성된 DB 테이블에 접근하는 메서드들을 사용하기 위한 인터페이스 데이터 처리를 위해서는 테이블에 어떤 값을 넣거나 값을 조회하는 등의 CRUD(CREATE, READ, UPDATE, DELETE)가 필요하다. 이 때 이러한 CRUD를 어떻게 처리할지 정의하는 계층이 바로 리포지터리이다. 내가 리포지터리와 테스트코드를 작성하면서 놀란 점은 바로 테스트 코드를 작성할 때 JpaRepository를 상속한 ~ 객체가 생성될 때 findBy + 엔티티 속성명 (findBySubject)과 같은 리포지터리 메서드를 작성하면 해당 속성의 값으로 데이터를 조회할 수 있는 게 놀라웠다.. 아니 이렇게 굉장한 기능이 있다니.. 스프링 놀랍다.. 아니 C#에서는 이러한 메서드들을 직접 구현을 ..
Lombok @Data 어노테이션은 @Getter/ @Setter/ @ToString/ @EqualsAndHashCode/ @RequiredArgsConstructor를 합친 것 Spring Boot @Validated어노테이션 이 클래스를 구성하는 메서드 중에서 1개라고 notblank notnull... 을 사용하면 지우면 안 된다. @Valid `주로 메서드의 매개변수에 사용되며, 주로 스프링 MVC에서 컨트롤러의 메서드에 적용된다.` @Validated `주로 메드나 클래스에 사용되며, 스프링 MVC 외의 다른 레이어에서도 사용할 수 있다.` @NotBlank 해당 어노테이션이 붙은 요소가 null이 아니고 공백 문자를 제외한 적어도 하나의 문자를 포함하고 있음을 검증한다. @NotNull 말 그..
나는 Java를 배우기 전에는 Java가 그냥 그런 언어라고 생각했다. 하지만 자바의 기초를 습득하고 스프링을 접할 때 정말 아름다운 언어잖아!라고 다시 생각했다.. 스프링 부트의 Controller에 대해 잠시 써보고자 한다. 먼저 Spring Boot는 Java 기반의 웹 애플리케이션을 쉽게 개발할 수 있도록 도와주는 프레임워크다. 그중 @Controller 어노테이션은 Spring에서 해당 클래스가 웹 요청을 처리하는 컨트롤러 클래스임을 나타낸다. @Controller public class ArticleController { } 저렇게 어노테이션을 붙여주기만 하더라도 스프링 부트에서 이게 컨트롤러구나 인식한다는 뜻이다..! 아니.. 자바는 C#이랑 비슷한 객체지향 언어가 아니였나..? 저런 식으로..
Comment