Spring
-
[Spring] RestDocs로 API 문서화를 간단히 해보자개발/SPRING 2023. 6. 18. 21:58
1. build.gradle.kts 설정 추가해야 할 부분만 표시해놓았습니다~ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { ... id("com.epages.restdocs-api-spec") version "0.16.0" ... } group = "com.test" version = "0.0.1-SNAPSHOT" java { sourceCompatibility = JavaVersion.VERSION_17 } repositories { mavenCentral() } dependencies { ... testImplementation("com.epages:restdocs-api-spec-mockmvc:0.16.2") } openapi3..
-
[Spring] DI를 쉽게 하는 방법 (Feat. @RequiredArgsConstructor)개발/SPRING 2023. 2. 26. 14:44
1. 개요 Spring DI 방법은 대표적으로 아래의 세 가지를 이용한다. 생성자 주입 Field 주입 Setter 주입 보통은 @Autowired를 이용한 Field 주입을 많이 사용하는데, 생성자 주입을 권장한다. 순환참조 이슈 Bean을 Immutable 하게 주입 가능 등 장점이 많다. 2. 기본적인 생성자 주입 방법 @RestController @RequestMapping("") public class TestController { private final ProjectService projectService; private final CatalogService catalogService; private final MailService mailService; public TestControlle..
-
[Kubernetes] Canary 배포 환경 구성개발/Infra 2022. 12. 30. 11:09
0. 개요 Canary 배포란? 구 버전의 서비스와 새 버전의 서비스를 동시 구성, 일부 트래픽을 새 버전으로 분산하여 에러 여부 판단 및 모니터링 하는 배포방식 보통 구 버전은 PRODUCTION / 새 버전은 CANARY 로 서비스를 칭한다. k8s의 nginx-ingress-controller를 통해 트래픽을 분산할 수 있다. weight 기반: 100 - X % / X % 로 트래픽 분산 (random) cookie 기반: 요청의 cookie value를 확인하고 production / canary 서비스로 분산 header 기반: 요청의 header value를 확인하고 production / canary 서비스로 분산 1. 테스트용 프로젝트 생성 간단하게 2개의 프로젝트를 구성한다. 동일한 A..
-
Spring Bean의 Scope개발/SPRING 2021. 8. 19. 21:08
Spring Bean의 Scope 스프링에서는 Bean으로 지정된 객체는 기본적으로 싱글톤 객체로 관리하게 됩니다. 하지만 요구사항에 따라 싱글톤이 아닌 방법으로 빈을 구성해야 하는 경우가 있는데, 이와 같은 경우를 명시적으로 구분하기 위해 스프링에서는 scope라는 키워드를 사용합니다. Scope 종류 1. Singleton 하나의 Spring 컨테이너에는 하나의 Bean 객체만 존재할 수 있다. 장점 : 고정된 메모리 영역을 사용하므로 메모리 절약, 데이터 공유 용이, 데이터 무결성, 접근성 확보 단점 : 너무 많은 일을 하거나 많은 데이터를 공유시킬 경우 다른 클래스의 인스턴스들 간에 결합도가 높아져 "개방-폐쇄 원칙" 을 위배하게 된다. 2. Prototype Bean 호출 시 마다 새로운 인스턴..