naver / arcus-spring

ARCUS as a caching provider for the Spring Cache Abstraction
Apache License 2.0
26 stars 16 forks source link

FEATURE: Replace Assert.notNull(Object object) to Assert.notNull(Object object, String message) in createArcusKey method in ArcusCache Class for use latest spring framework version #64

Closed kiheyunkim closed 8 months ago

kiheyunkim commented 8 months ago

arcus-spring에서는 기본적으로 주입되고 있는 4.3.0.RELEASE spring context의 org.springframework.util.Assert.notNull(final Object)을 이용하여 com.navercorp.arcus.spring.cache.ArcusCache 클래스의 createArcusKey(final Object key)매소드의 key가 null이 아님을 확인하고 있습니다.

notNull 매소드는 pom.xml내의 spring-context를 통해서 주입되어 사용되고 있고 해당 의존성은 provided scope이므로 다른 spring framework 버전이 있는 경우 이와 별개로 주입되는 의존성의 spring framework의 버전이 우선되어 사용되게 됩니다.

여기서 이용하고 있는 notNull 매소드는 arcus-spring에서 기본적으로 사용중인 버전(4.3.0.RELEASE)에서는 org.springframework.util.Assert.notNull(final Object)가 정상적으로 구현된 매소드입니다. javadoc

하지만 스프링 버전이 4.3.x가 되면서 부터는 depreacted 어노테이션이 붙기 시작했고javadoc

최근 스프링버전애서는 Assert 클래스 내 notNull(final Object object)매소드가 완전히 사라졌으며, spring-arcus를 이용 할 때는 provided scope로 인해 최신 spring framework 안에있는 Assert로 대체되면서 해당 depreacted 된 매소드가 아예 사라져서(javadoc) arcus-spring내의 해당 부분에서 매소드를 찾을 수 없는 다음과 같은 오류가 발생합니다.

image

따라서 이와 같은 매소드를 찾을 수 없는 오류를 해결하기 위해 deprecated 대상인 매소드인 org.springframework.util.Assert.notNull(final Object object) 대신 기존에 이용했던 spring framework 4.3.0.RELEASE 뿐만 아니라 그 이후의 최신버전에서도 depreacted되지 않은 org.springframework.util.Assert.notNull(Object object, String message)을 이용하여 해당 위치에서의 오류를 해결하고 기존의 동작과도 동일하게 동작하도록 두번째 파라미터인 message에는 "[Assertion failed] - this argument is required; it must not be null"를 넣어 기존 Assert.notNull(Object object)를 이용했을때와 동일한 결과가 나오도록 다음과 같이 변경하고자 합니다.

확인부탁드립니다.

kiheyunkim commented 8 months ago

https://github.com/naver/arcus-spring/pull/63 에서 수정된 것으로 확인되어 close 합니다.