Controller [com.sample.controller.SomeController] Method [public com.sample.SomeObject com.sample.controller.SomeController.page(public com.sample.SomeObject)] with argument values: [0] [type=org.springframework.validation.support.BindingAwareModelMap] [value={}] ] with root cause java.lang.IllegalArgumentException: argument type mismatch at java.base/jdk.internal.reflect.NativeMethodAccessorImp..
Spring을 사용하면서 외부 설정 파일(properties or yml)은 필수적으로 사용된다. 하지만 이를 읽어오지 못하는 문제는 자주 직면하게 된다. 예를 들면 다음과 같은 오류다. org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'apiService': Unsatisfied dependency expressed through field 'jwtUtil'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jwtUtil': Injecti..
Springboot로 넘어가면서 yaml 파일이 많이 사용되고 있지만 여전히 properties 파일도 많이 사용된다. yaml 파일일때는 고민없이 사용할수 있는 Value에 대한 입력방식이 properties 파일에서는 고민이 되는 부분이 있다. 바로 제목에 쓴 것처럼 multiline의 value와 list, array인 경우이다. application.properties #multiline test.multiline=aaaaa\n\ bbbbb\n\ ccccc #list or array test.list.fruit=apple,banana,watermelon multi line은 문자열 뒤에 \n\ 을 입력하면 된다. 줄 수만큼 넣어줘야한다. list, array는 , 로 구분지어 넣을 항목들을 쭉 넣..
아주 기본적인건데 삽질을 많이 했다. 나름 spring과 오랜 시간을 보내며 조금 안다고 생각을 했는데 한참 부족한것 같다. 지난번에 Springboot Batch Tasklet에 대해 글을 쓰며 두가지 방식에 소개를 했었는데 이와 관련해 @Value로 application.yml 파일에서 값을 가져오는 부분의 이슈를 발견했다. 무슨 문제인지 보자. application.yml test: oingdaddy: Oing is the prettiest in the world! 이 test.oingdaddy 라는 값을 작성하는 tasklet에서 가져다 쓰고 싶은 경우이다. 일반적인 Spring에서 그러하듯 @Value("${test.oingdaddy}) 를 통해서 값을 가져올 것이다. Case1. 하나의 클래스..
Spring Batch 환경을 구성할때 Job이 여러개 있고 이것을 실행시켰을때 어떤 결과가 나올까? 정답은 "모든 Batch Job이 실행이 된다. " 이다. 내가 만든 Job 중 특정 Job만 실행을 시키고 싶다면 어떻게 해야 할까? 간단히 해결할 수 있다. application.properties (or application.yml) spring.batch.job.names=${job.name:NONE} application.properties에 위와 같은 구문을 추가시켜주고 Boot Dashboard > 프로젝트 우클릭 > Open Config > Arguments tab > Program arguments 에서 다음을 넣어준다. --job.name=실행시키고 싶은 job 이렇게 넣어준 후에 De..
Spring에서 외부 환경변수의 값을 가지고 오는 방법은 다양하다. 그중 하나가 PropertyPlaceholderConfigurer 를 통해서 가져오는 방법이다. 가장 일반적인 방법이다. 사용법은 다음과 같다. classpath*:/config/test.properties 위와 같이 작성을 잘 했는데 뭘 해도 값을 못가져오는 경우가 있다. 이를테면 java에서 @Value("${testkey}") 이런식으로 test.properties에 정의한 testkey에 대한 value를 얻는다거나 ApplicationContextAware 의 구현체로부터 ApplicationContext를 가지고 와서 getEnvironment().getProperty("testkey") 를 해서 가지고 온다거나 하는 방식 모..
수많은 삽집을 해가며 결국에는 전환에 성공을 했다. 아주 초간단으로 최소한의 것들만 바꾸고 전환한거라 앞으로 할일(applicationContext의 java config 전환, spring properties 활용 등)도 많지만 그래도 기쁜 마음으로 빌드 및 실행을 해본다. 물론 실행은 전환을 하는 과정에 수도 없이 해봤다. 이클립스의 boot dashboard를 통해서 돌렸을때는 잘 동작을 한다. 주르르륵 올라가는 로그를 보면 참 뿌듯하다. 사실은 별로 많이 바꾼게 없는데 springboot가 알아서 바꿔준 부분도 많은데 혼자서 이것저것 다 만들어보고 고생해서 한거라 더 감격스러웠다. 이제 마지막 단계가 남았다. 이걸 서버에서 돌리기 위해 war로 말아줘야 하고 또 그걸 실행을 시켜야 한다. 기존의 ..
2020/05/13 - [framework/Springboot] - spring 프로젝트에서 springboot 프로젝트로 migration 하기 (1) - pom.xml 2020/05/13 - [framework/Springboot] - spring 프로젝트에서 springboot 프로젝트로 migration 하기 (2) - web.xml 2020/05/14 - [framework/Springboot] - spring 프로젝트에서 springboot 프로젝트로 migration 하기 (3) - 파일 추가 및 변경 중요한 전환은 이제 다 마쳤고 이제 springboot에서 logback을 사용하는 방법에 대해 알아보자. AS-IS framework에서도 logging framework는 logback을 ..