Spring Framework
-
FeignClient 헤더 가져오기Spring Framework 2023. 7. 12. 00:01
개요 FeignClient에서 Header 값 가져오는 방법 Feign @FeignClient( name = "my-feign-client", url = "\${clients.my-server.URL}", ) interface MyFeignClient { @PostMapping(value = ["/test/header"]) fun testFeignGetHeader( @RequestParam("testParam") testParam: String, ): Response 이때 Feign.Response를 통해 가져온다. 호출하는 부분 val response = myFeignClient.testFeignGetHeader(testParam) val token = response.headers()["Authori..
-
Spring Cloud Feign FallbackFactory가 동작하지 않는다Spring Framework 2023. 7. 6. 00:01
공식문서를 살펴보자 If Spring Cloud CircuitBreaker is on the classpath and spring.cloud.openfeign.circuitbreaker.enabled=true, Feign will wrap all methods with a circuit breaker. CircuitBeaker가 classpath에 존재하고, spring.cloud.openfeign.circuitbraker.enabled=true가 되어있으면 circuit braker로 모든 feign 메서드를 래핑 한다. 기본옵션은 false Fallback Factory 구현 import org.springframework.cloud.openfeign.FallbackFactory import org...
-
Spring Boot 2 to Spring Boot 3 마이그레이션Spring Framework 2023. 6. 7. 00:01
개요 spring boot 2.6.2 버전을 spring boot 3.0.6으로 마이그레이션 하며 스프링부트 2와 3의 차이점을 알아보고자 합니다. Spring Boot 2.7로 마이그레이션 우선 Spring Boot 2의 가장 최신버전으로 마이그레이션을 하고, 최대한 @Deprecated된것을 제거하는 것이 좋습니다. @Deprecated된 것 중 아예 제거된 것이 있을 수 있으며 원활하게 Spring Boot 3로 넘어갈 수 있습니다. JDK Version 스프링 부트3 에서는 JDK 17 미만의 버전을 지원하지 않습니다. 패키지 이름 변경(javax -> jakarta) javax.persistence.* ➔ jakarta.persistence.* javax.validation.* ➔ jakarta..
-
ThreadLocal이란?Spring Framework 2023. 5. 19. 00:01
ThreadLocal이란? 멀티스레드 애플리케이션에서 변수를 특정 스레드에 로컬로 설정할 수 있는 프로그래밍 개념입니다. 즉, 스레드 로컬 변수는 변수에 액세스 하는 각 스레드마다 다른 값을 가질 수 있는 변수입니다. 각 스레드는 다른 스레드에 속한 복사본에 영향을 주지 않고 변수의 자체 복사본의 읽고 수정할 수 있습니다. Java에서는 ThreadLocal 클래스를 사용하여 스레드 로컬 변수를 선언할 수 있습니다. Thread Local의 활용 일반적으로 멀티스레드 애플리케이션에서 사용자의 세션 데이터나 스레드의 현재 상태와 같이 특정 스레드에 특정한 데이터를 저장하는 데 사용됩니다. Spring Security에서 Thread Local을 활용하여 사용자 인증 정보를 전파 매개변수로 전달할 필요 없이..
-
6장 - 스프링이 사랑한 디자인 패턴Spring Framework/스프링 입문을 위한 자바 객체 지향의 원리와 이해 2023. 4. 21. 00:01
스프링은 객체 지향의 특성과 설계 원칙을 극한까지 적용한 프레임워크입니다. 스프링을 공부하다 보면 자연스럽게 객체 지향 설계의 베스트 프렉티스, 즉 디자인 패턴을 만날 수 있습니다. 어댑터 패턴 호출당하는 쪽의 메서드를 호출하는 쪽의 코드에 대응하도록 중간에 변환기를 통해 호출하는 패턴입니다. serviceA.runServiceA() serviceB.runServiceB() //위의 코드를 어댑터로 감싼다 class AdapterServiceA{ val sa1= ServiceA() fun runService(){ sa1.runServiceA() } } class AdapterServiceB{ val sb1= ServiceB() fun runService(){ sb1.runServiceB() } } // ..
-
5장 - 객체 지향 설계 5원칙 - SOLIDSpring Framework/스프링 입문을 위한 자바 객체 지향의 원리와 이해 2023. 4. 18. 00:01
SOLID SRP - 단일 책임 원칙 어떤 클래스를 변경해야 하는 이유는 오직 하나여야 한다 만약 if문들이 많이 보인다면 code smell을 고려해보아야 한다. OCP - 개방 폐쇄 원칙 자신의 확장에는 열려있어야 하고, 주변의 변화에는 닫혀있어야 한다. 운전자가 자동차를 타는데 마티즈를 타던 소나타를 타던 운전하는 습관이 바뀌면 안 된다. JDBC를 활용할 때 데이터베이스가 oracle, mysql, ms-sql로 바뀌어도 JDBC 인터페이스라는 완충 장치로 인해 애플리케이션은 변화에 영향을 받지 않는다. 편의점 직원이 판매하는 행위는 손님이 학생인지, 노인인지, 여자인지에 전혀 영향을 받지 않으며, 손님도 편의점 직원이 교대근무를 하더라도 구매라는 행위에 전혀 영향을 받지 않는다. LSP - 리스..
-
4장 - 자바가 확장한 객체 지향Spring Framework/스프링 입문을 위한 자바 객체 지향의 원리와 이해 2023. 4. 17. 00:01
객체 지향 4대 특성을 넘어 자바가 객체 지향을 확장하기 위해 사용하는 키워드와 개념을 알아보는 장입니다. 자바가 객체지향을 위해 사용하는 키워드 abstract 키워드 (추상메서드, 추상클래스) 생성자 static 블록 final 키워드 (변수, 메서드) instanceof 연산자 package 키워드 interface와 implements 키워드 this 키워드 super 키워드 아마 Java를 이미 공부하셨다면 익숙한 키워드들이기 때문에 자세히 다루지는 않고 넘어가겠습니다. 검색을 통해서도 충분히 학습할 수 있을 것 같습니다.
-
3장 - 자바와 객체 지향Spring Framework/스프링 입문을 위한 자바 객체 지향의 원리와 이해 2023. 4. 9. 00:01
객체 지향은 인간 지향이다 프로그래밍 언어의 발전사를 보면 저수준의 기계어로 시작해서 고수준의 자바까지 인간을 배려하기 위해 발전해 왔습니다. 기존의 구조적 프로그래밍 언어에서 중요한 것은 함수로 코드를 논리적인 구조로 분할하여 정복하는 Divide and Conqure 방식을 지향했습니다. 이후에 더 파격적인 제안으로 객체 지향이 등장하게 됩니다. 모든 것은 객체이며 우리가 주변에서 사물을 인지하는 방식대로 프로그래밍을 하자는 것이 객체지향의 출발점입니다. 김종민, 한효주, 김연아 라고 하는 존재는 사람이라는 분류에 속합니다. 그리고 사람이라는 분류 안의 객체(object)들은 나이, 몸무게, 키 등의 속성(property)과 먹다, 자다, 울다 등의 행위(method)를 가지고 있습니다. 객체 지향의..