분류 전체보기

트러블슈팅

[트러블슈팅] gradle 빌드시 java.lang.IllegalAccessError: class org.gradle.internal.compiler.java.ClassNameCollector 발생

개요 터미널에서 jar 파일을 빌드하던 도중 다음과 같은 에러를 만났다. $ ./gradlew bootJar > Task :compileJava FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':compileJava'. > java.lang.IllegalAccessError: class org.gradle.internal.compiler.java.ClassNameCollector (in unnamed module @0x3bb7d1cd) cannot access class com.sun.tools.javac.code.Symbol$TypeSymbol (in module jdk.compile..

Spring/스프링 핵심 원리 - 고급편

[스프링 핵심 원리 - 고급편] 실무 주의사항

본문은 인프런의 [스프링 핵심 원리 - 고급편]를 수강하고 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 스프링 핵심 원리 - 고급편 1. 쓰레드 로컬 2. 템플릿 메서드 패턴과 콜백 패턴 3. 프록시 패턴과 데코레이터 패턴 4. 동적 프록시 기술 5. 스프링이 지원하는 프록시 6. 빈 후처리기 7. @Aspect AOP 8. 스프링 AOP 개념 9. 스프링 AOP 구현 10. 포인트컷 11. 실무 주의사항 1. 프록시의 내부 호출 스프링의 프록시 방식의 AOP는 메서드 내부 호출(self-invocation)에 프록시를 적용할 수 없다는 한계가 있다. 프록시 방식의 AOP는 프록시를 통해서 대상 객체(target)를 호출해야만 AOP가 적용된다. ..

Spring/Spring

[Spring] Reactive Feign에서 커스텀 Serializer/Deserializer 사용하기

1. Feign에서 커스텀 Serializer/Deserializer 사용하기 Feign을 사용할 땐 외부 API의 응답에 따라 커스텀 Serializer/Deserializer가 필요한 경우가 있다. 이 경우 별도의 Config 클래스 내에서 @Bean 메서드를 통해 JacksonDecoder를 스프링 빈으로 등록하면 된다. 이때, JacksonDecoder의 생성자에 커스텀 Serializer/Deserializer가 등록된 ObjectMapper를 넘겨준다. 클래스 레벨에 @Configuration 애너테이션을 붙이면 전역 설정이 되므로 주의하자. open class FeignConfig { @Bean open fun jacksonDecoder() = JacksonDecoder(ObjectMapp..

프로그래밍 언어/Java + Kotlin

[Java] Collection과 Collections의 차이

1. Collection 인터페이스 Collection에 앞서 컬렉션 프레임워크(collection framework)에 대한 이해가 필요하다. 컬렉션 프레임워크란 다수의 객체(컬렉션)를 다루기 위해 자바에서 제공하는 표준화된 프로그래밍 방식이다. 컬렉션 프레임워크에서는 데이터를 저장하는 자료구조에 따라 List, Set, Map 등의 다양한 인터페이스를 정의하고 있다. Collection은 컬렉션을 다루기 위한 최상위 인터페이스로서 java.util에 정의되어 있다. List, Queue, Set 등이 Collection을 상속하는 반면, Map은 Key, Value라는 별도의 구조를 취하므로 Collection을 상속받지 않는다. 단순하게 생각해서 컬렉션 타입이 여러 개 있고, 이것들이 Collect..

Spring/스프링 핵심 원리 - 고급편

[스프링 핵심 원리 - 고급편] 포인트컷

본문은 인프런의 [스프링 핵심 원리 - 고급편]를 수강하고 정리한 글입니다. 필요에 따라 생략/수정된 부분이 있을 수 있으며, 내용이 추후 변경될 수 있습니다. 스프링 핵심 원리 - 고급편 1. 쓰레드 로컬 2. 템플릿 메서드 패턴과 콜백 패턴 3. 프록시 패턴과 데코레이터 패턴 4. 동적 프록시 기술 5. 스프링이 지원하는 프록시 6. 빈 후처리기 7. @Aspect AOP 8. 스프링 AOP 개념 9. 스프링 AOP 구현 10. 포인트컷 11. 실무 주의사항 1. execution 포인트컷 지시자 AspectJ는 포인트컷을 편리하게 표현하기 위한 특별한 표현식을 제공하는데, 이를 포인트컷 표현식(AspectJ pointcut expression)이라고 한다. 포인트컷 표현식은 포인트컷 지시자(Poin..