일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- feign
- intelij
- java
- n+1
- circuitbreaker
- optional
- 동작방식
- jvm
- execution engine
- Hotspot VM
- closeable
- zipWith
- webflux
- GC
- 람다표현식
- wagon-ssh
- Class Loader
- Kotlin
- jetbrain
- try-with-resources
- 4-way-handshake
- AutoCloseable
- try-catch-finally
- Runtime data area
- springboot
- resilience4j
- 날짜쿼리
- tcp
- 코딩테스트
- try-catch
- Today
- Total
목록Spring (6)
JuBin's personal study blog
의존성 주입(Dependency Injection)이란?SpringFramework에서 지원하는 3대 핵심 프로그래밍 모델 요소(AOP, DI, IOC) 중 하나로, 객체 간의 관계(의존성)를 직접 생성해서 사용하는것이 아니라, 외부(Spring Container(DI Container))에서 관리되는 Bean을 런타임에 동적으로 주입 시켜주는 방식 입니다.의존성 주입이 필요한 이유public class Store { private Pencil pencil; public Store() { this.pencil = new Pencil(); }}문제점Store Class와 Pencil Class의 관계가 강결합 되어있다.(Pencil이 Store에 의존적이다.)두 Class가 ..

zipWith은 Reactor의 Mono에서 사용 가능한 함수 입니다. zipWith에 대해 아주 간단히 설명하고자 합니다. 위 사진은 zipWith 함수의 flow를 보여줍니다. 사진 설명을 하자면 초록색원 A, 노란색사각형 1은 각각 Mono에서 발생되는 return값 입니다. 각 도형 오른쪽 검은 실선은 해당 Mono가 return되는 시점입니다. zipwith(A,1)로 인해 결과물 A1이 return 됩니다. 반응형 프로그래밍에서 코드를 짜는 경우 서로 다른 두 Mono가 작업이 완료되는 시점에 특정 동작을 함수가 필요한 경우가 있습니다. 이러한 상황에 zipWith을 사용하면 유용합니다. return Mono.just(req).flatMap { this.bookingConfigService.g..
간단한 개념부터 정리해 보자. 리액티브 프로그래밍의 필요성 리액티브 프로그래밍이 세상에 소개된지는 오래 되었지만 지금까지 왜 주류로 올라서지 못하였을까? 아마 리액티브 프로그래밍을 써야할 정도의 대규모 서비스가 많지 않았기 떄문이였던것 같다. 세상은 새로운 시대로 접어들면서 스타트업도 수백만명의 사용자에게 컨텐츠를 제공할 수 있어야 하고 전 세계의 고객을 상대해야 하므로 24시간 동안 끊임없이 운영되어야 한다. 또한 클라우드 환경에서 어플리케이션을 운영하는 것이 보편화 되고 있어서 문제가 생기면 서버를 더 투입하면 된다 라는 예전 방식은 이제 통하지 않게 되었다. 개발자들은 기존 자원을 더 효율적이고 일관성 있게 사용하는 방법을 찾고 있으며, 그 해법이 바로 리액티브 스트림이다. Spring WebFlu..
CORS - Cross Origin Resource Sharing 추가 HTTP 헤더를 사용하여, 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체제입니다. 웹 애플리케이션은 리소스가 자신의 출처(도메인, 프로토콜, 포트)와 다를 때 교차 출처 HTTP 요청을 실행합니다. 예시 ) https://domain-a.com의 프론트 엔드 JavaScript 코드가 Jquery를 사용하여 https://domain-b.com/data.json을 요청하는 경우 Client Request(localhost:1804 -> localhost:1814) function corsTest(param) { var requestUrl = "http://..
간단한 예제코드 @Component public class ABean { private BBean b; public ABean(BBean b) { this.b=b; } public void bMethod() { b.print(); } public void print() { System.out.println("ABean !"); } } @Component public class BBean { private ABean a; public BBean(ABean a) { this.a=a; } public void aMethod() { a.print(); } public void print() { System.out.println("BBean !"); } } @SpringBootApplication public c..
Spring이 컴포넌트 스캔할땐 @SpringBootApplication에 선언된 패키지 하위에서만 스캔한다. 스프링컨테이너는 @Component이 붙은것들을 스프링이 올라갈때 기본적으로 스프링컨테이너에 1개의 인스턴스만 등록해놓는다. 다른곳에서 @autowired로 의존성 주입시 스프링컨테이너에 이미 만들어진 인스턴스만 사용(메모리절약됨) 의존성 주입시에는 생성자를통한 의존성주입을 선호한다. 보통 정형화된 클래스(컨트롤러,서비스,리포지토리)는 @Controller, @Service, @Repository를 통해 스프링 컨테이너에 등록해주고 정형화되지 않거나 구현클래스(구현체)를 변경해야 하면 SpringConfig(@Configuration이 붙은 class) 같은 설정파일을 통해 @Bean을 써서 스..