본문 바로가기

스프링26

~~~ because "this.redisTemplate" is null - 스프링 REDIS 테스트 오류 스프링에서 redis를 적용한뒤 테스트 코드를 작성하고 돌렸을시 다음과 같은 오류가 발생한다. 그러나 본 어플리케이션 환경에서는 잘 돌아가기에 원인을 찾는데 시간이 오래 걸렸다. 원인: bean으로 등록된 객체들을 못찾아와 생기는 문제 해결: @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class RedisTest { .... } @SpringBootTest 어노테이션을 추가해 본래 어플리케이션에 추가된 설정을 테스트 환경에서도 똑같이 재현한다. 즉, redisTemplet 을 빈으로 등록한다. 다만 이를 사용하면 단위 테스트 속도가 느려질수 있다는 단점이 존재한다. 2024. 2. 4.
java.lang.IllegalArgumentException: Name for argument of type [java.lang.Integer] not specified, and parameter name information not available via reflection - 스프링. 파라미터 어노테이션에 자동 이름 부여가 안되는 오류 오류 상황 @GetMapping("/test") public String test(@RequestParam Integer data){ return "ok"; } 이 컨트롤러에 http://localhost:8080/test?data=10 요청시 java.lang.IllegalArgumentException: Name for argument of type [java.lang.Integer] not specified, and parameter name information not available via reflection. Ensure that the compiler uses the '-parameters' flag. 오류가 터지며 응답이 안된다. 원인 원래는 자동으로 변수 이름이 @RequestParam.. 2024. 1. 31.
Parameter 0 of constructor in 컨트롤러 클래스 required a bean of type '클래스 이름' that could not be found. 스프링 에러 빈이 정상적으로 등록되지 않았을때 발생하는 문제다. 문제 원인은 대부분 다음과 같다. 1. @Service, @Repository 같은 어노테이션을 안붙임. 2. @Component 을 붙여주거나 직접 @Configruation 클래스에서 @Bean 어노테이션을 이용해 빈으로 등록 3. Application 실행 클래스 하위 패키지에 빈 클래스를 생성 -> 내 케이스 나는 3번의 케이스, 즉, @ComponentScan 대상이 아닌 패키지에 클래스를 생성한 것이 문제였다. 2024. 1. 27.
org.hibernate.validator.spi.scripting.ScriptEvaluatorNotFoundException: HV000232: No JSR 223 script engine found for language "javascript". 에러 - 스프링 @ScriptAssert 를 사용할시 다음과 같은 오류가 발생한다. 원인: JDK8 ~ 14까지는 Javascript를 지원하는 Nashorn 엔진을 쓰지만, JDK14 이후부터는 Javascript가 지원되지 않는 GraalVM을 사용하기 때문이라고 한다. 뭔 소리인지 정확히 모르겠지만 JVM 버전이 높아서 터진 문제다. 해결: JVM을 낮추는 것은 간단하지만 위험한 해결법이고, 스프링 부트 3.x 버전 이상부터는 무조건 jvm 17이상을 사용해야 하기에 낮출수도 없다. dependencies { implementation 'org.openjdk.nashorn:nashorn-core:15.3' } 이런 식으로 디펜던시를 추가하면 해결된다. 2024. 1. 12.