Static Method Mock 처리하기 엑셀 다운로드를 위해 poi 라이브러리를 사용중인데 관련 클래스 생성자에서 Workbook 을 생성하는 부분이 static 으로 처리되고 있어서 단위테스트 할 때 NPE 가 터지는 부분을 어떻게 처리 했는지 기록해보려고 한다. 외부 DI 를 직접 만들어주자 이전부터 유투브에 백기선님의 영상을 종종 보던게 있는데 외부 서비스를 호출하는 것은 어떻게 테스트할 것인가 ? (이걸 모르면 공부 제대로 하지 않았다는 말에 늘 보고 또 보고 잊어먹으면 또 보고 하던 영상) 이 있었는데 이럴 때 쓰라고 있는 것 같아서 시도해봤다. 현재 ExcelWriter 라는 클래스 생성자는 다음과 같다. public ExcelWriter(Resource resource) throws IOException { this.workboo.. Backend/Spring 2년 전
Caused by: java.lang.ClassNotFoundException: Could not load requested class : json @Type(type = "json") @Column(name = "form", columnDefinition = "json") private String form; 위처럼 정의하여 DB에서도 데이터 타입이 json이고 엔티티에서도 똑같이 맞추고 프로젝트를 실행하면 다음과 같은 에러가 나타난다. 해석해보면 json 클래스를 불러올 수 없다고 한다. json 타입이 지정이 되어있지 않으니 불러올 수 없다고 하는거니까 타입을 정의해주면 된다. @TypeDef(name = "json", typeClass = JsonStringType.class) public class Test {} 클래스에 애너테이션을 위처럼 추가하면 json이 정의가 되고 @Type 으로 지정한 컬럼을 사용할 수 있게된다. Backend/Spring 3년 전
Spring Boot - (5) AOP 설정 이전 포스팅에서 logback 설정까지 했었다. Spring Boot - (4) logback 설정 이번에는 AOP 설정을 해볼 것이다. AOP AOP 관련하여 역시나 잘 정리된 갓대희 님의 포스팅 글을 참고하여 재정리 해보도록 하겠다. 결론을 먼저 말하자면 자바 웹 개발을 할 때 공통적으로 처리해야하는 부분에 대해 별도로 관리하며, Life Cycle에 따라 부분적으로 원하는 기능을 실행할 수 있다. 공통적으로 처리하는 방식에는 3가지가 있다. Filter Interceptor AOP 흐름은 Filter → Interceptor → AOP → Interceptor → Filter 으로 흘러가며 이미지로 확인하면 다음과 같다. Interceptor와 Filter는 Servlet 단위에서 실행된다. 반면 .. Backend/Spring 4년 전
Spring Boot - (2) Controller 생성 및 JSP 연동 이전 포스팅에서 Spring Boot의 기본 세팅을 해봤다. Spring Boot - (1) 시작하기 이번에는 Controller 생성 및 JSP를 연동할 것이다. 최상위 패키지 예) com/example/demo/DefaultApplication.java @SpringBootApplication // @SpringBootApplication // => @EnableAutoConfiguration + @ComponentScan + @Configuration // 해당 annotation을 설정한 클래스가 있는 package를 최상위 패키지로 인식하고 ComponentScan을 수행 public class DefaultApplication { public static void main(String[] ar.. Backend/Spring 4년 전