inflearn logo
강의

講義

知識共有

Spring Bootで実際に作りながら学ぶ大規模システム設計 - キャッシュ戦略

http://localhost:8080/cache-strategy/{{cacheStrategy}}/items 호출 시 NPE 에러 문의

解決済みの質問

168

syh8088

投稿した質問数 77

1

 ------------------------------ 해결 방안-------------------------------

저와 비슷한 이슈가 있으신분은

 

이렇게 처리 부탁드립니다!

 

인텔리제이 설정에서

 

Preferences > Build, Execution, Deployment > Build Tools > Gradle에서

Build and run using : Gradle

Run tests using : Gradle

 

이렇게 수정 하고 다시 시도 부탁드립니다!!!

 

쿠케님 감사합니다 :) 

 

image.png

 

 

안녕하세요 우선 좋은 강의 만들어주셔서 정말 감사드립니다.

GET - http://localhost:8080/cache-strategy/NONE/items/{{itemId}}

 

해당 API 를 호출 하게 되면

ItemController -> KukeCacheAspect -> KukeCacheKeyGenerator -> ItemNoneCacheService 

 

대충 이런 흐름으로 가게 되는데요.

KukeCacheKeyGenerator 객체에서

 

for (int i = 0; i<args.length; i++) {
  context.setVariable(parameterNames[i], args[i]);
}

 

parameterNames 객체에 NPE 에러가 발생 되고 있습니다.

코드는 강의 자료실 통해 제공해주신 코드로 실행 해보았습니다.

 

이 부분 어떻게 수정을 해야 할까요?

 

 

spring-boot redis backend 시스템-디자인 cache

回答 2

1

syh8088

 ------------------------------ 해결 방안-------------------------------

저와 비슷한 이슈가 있으신분은 이렇게 처리 부탁드립니다!

 

인텔리제이 설정에서

Preferences > Build, Execution, Deployment > Build Tools > Gradle에서

Build and run using : Gradle

Run tests using : Gradle

 

이렇게 수정 하고 다시 시도 부탁드립니다!!!

 

쿠케님 감사합니다 :) 

0

kuke

리나님, 안녕하세요!

이번에도 잘 수강해 주셔서 감사합니다.

 

CGLIB이 아닌 JDK Proxy(인터페이스의 파라미터 정보를 보존하지 못함)가 동작하는 것으로 보이고, 로컬 IDE 컴파일 환경에서 차이가 있는건지 싶군요..!

 

KukeCacheKeyGenerator.genKey 메소드에서 아래 출력 결과 공유해주실 수 있을까요?

System.out.println(joinPoint.getThis().getClass());

 

 해결 방법으로는,

인텔리제이 Settings > Build, Execution, Deployment > Compiler > Java Compiler 메뉴에서,

Javac Options > Additional command line parameters에다가 +parameters를 추가해보시겠어요?

class 파일에 파라미터명을 보존하는 설정입니다.

 

위 방법이 안되면, build.gradle에 아래 설정을 추가해보시거나,

tasks.withType(JavaCompile) {
    options.compilerArgs += ["-parameters"]

}

 

KukeCacheApplication에 @EnableAspectJAutoProxy(proxyTargetClass = true)를 추가해보시면 될 것 같습니다!

 

혹시 세 가지 방법 모두 안된다면 다시 말씀 부탁드립니다!

0

syh8088

image.png

말씀 해주신 부분

 

class kuke.cache.service.strategy.none.ItemNoneCacheService$$SpringCGLIB$$0

이렇게 찍혀져 나옵니다. CGLIB 프록시로 정상적으로 프록시 객체 생성 된 것이 아닌가요?

 

image.png

1.인텔리제이 Setting 에서 +parameters 추가

 

image.png

2.build.gradle 파일에 설정 추가

 

image.png

3.@EnableAspectJAutoProxy(proxyTargetClass = true) 추가

 

모두 해보았는데 동일한 NPE 에러가 발생되네요.ㅠ.ㅠ

 

1

kuke

앗 위 방법으로도 해결이 안되었군요.. 제공해드린 프로젝트 코드로 실행해도 동일하게 NPE가 발생하고 있는 상황인 것이죠?

0

kuke

Preferences > Build, Execution, Deployment > Build Tools > Gradle에서

Build and run using : Gradle

Run tests using : Gradle

혹시 이거 Gradle로 해보시겠어요?

0

kuke

그리고 위에 말씀드린 설정들은, build 디렉토리(class 컴파일 파일) 삭제하고 다시 실행해보시길 바랍니다!

0

syh8088

안녕하세요 선생님! 네 해결 했습니다. 정확히

 

Build and run using : Gradle

Run tests using : Gradle

 

이렇게 설정시 왜 해결 되었는지 찾아봐야 겠지만 ㅠㅠ

 

정말 감사합니다.

0

kuke

저도 인텔리제이 자체의 빌드 방식까지 세세하게 파악하고 있진 않은 상황이지만..!

무튼 잘 해결되었다니 다행입니다!

아무도 모르게 책 내시면 모르실 줄 알고!!

1

25

2

Jib 이미지 빌드에서 docker credential 관련으로 이슈가 있다면

1

34

1

스크립트에 대해 질문 있습니다.

1

24

1

같은 사용자가 연속된 중복 호출할 경우 어떻게 되는지 궁금합니다!

2

19

1

조건 검색 질문

0

19

1

깃허브 저장소를 어디에 첨부하셨나요?

1

28

1

nestjs 강의는 없나요??

1

30

2

JPA 엔티티로 만들었다고 기술종속이 아닌지에 대한 질문

0

30

2

스타터 저장소

1

31

1

11장 미션에 이메일 남기는걸 누락했어요.

0

32

1

콘솔 로그가 깨져나오는데 혹시 방법이 있을까요?

0

39

2

PlatformTransactionManager, ResourcelessTransactionManager 질문

1

51

2

WebFlux & Web MVC 혼용해서 사용했을 때 스레드에 대한 질문

0

28

1

자료 한번에 다운받기

0

28

1

서울 이미지 10개에 대한 url 접근 불가

0

60

2

시퀀스다이어그램은 무슨툴로 그리신건가요?

0

36

2

스프링 빈 등록 방법 2가지 다 알아야하는 이유

0

49

1

Service Create/Update Record 운용과 Delete Record 미운용의 차이 질문

0

53

1

23강 5:38 부분 질문 있습니다!

0

70

1

23강 17초 부분 질문있습니다~

0

82

2

Split 전략 강의 중 질문 있어요

0

95

2

질문이 있습니다!!

0

103

2

RateLimitTest시 저는 2초로 해야 정상으로 나오는데

0

96

2

섹션3에 22번째 강의에서 에러발생합니다..

0

151

4