| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 페이징
- dockerhub
- Web
- @Transactional
- JPA
- @ComponentScan
- Spring Data JPA
- Dead Letter Queue
- 지연 로딩
- docker compose
- kafka
- 컨테이너
- docker
- 쿠버네티스
- 스프링 부트
- JWT
- mybatis
- JdbcTemplate
- Spring Container
- JPQL
- Routing Key
- DI
- redis
- DLQ
- securitycontextholderfilter
- MSA
- 서블릿 컨테이너
- Spring
- AWS
- CORS
- Today
- Total
목록Spring Container (6)
look-forest
순수한 DI 컨테이너인 AppConfig(설정 클래스)와 스프링 컨테이너의 차이는 무엇일까? 무엇이 차이를 만들어 내는 걸까? 더보기를 누르기 전에 생각해보자! Q. 웹 애플리케이션에서 싱글톤이 많이 쓰이는 이유는 뭘까? 더보기 웹 애플리케이션은 보통 여러 고객이 동시에 요청을 한다 [문제] 이전에 만들었던 스프링 없는 순수한 DI 컨테이너인 AppConfig는 요청할 때마다 매번 객체를 새로 생성한다. → 메모리 낭비가 심하다! [해결] 객체를 1개만 생성해서 공유하도록 설계하면 된다 → 싱글톤 패턴 Singleton pattern 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴 구현 방법에는 여러가지가 있으나, 가장 기본적인 방법을 알아보자 Q. 기본적인 구현 방법? 더보기 1. s..
이번 시간에는 스프링 컨테이너와 빈의 생성 과정, 빈의 조회 과정에 대해 알아본다. 스프링 컨테이너의 생성 과정 Q. 스프링 컨테이너는 빈을 어떤 방식으로 저장하는가? 더보기 빈 이름을 key로 빈 객체를 value로 저장 빈 이름은 기본적으로 메소드 이름을 사용 Q. 스프링 빈 생성 과정에 필요한 정보는? 더보기 구성 정보 (XML, 자바 설정 클래스 등) 1. 스프링 컨테이너 생성 스프링 컨테이너: ApplicationContext (⊃BeanFactory) - ApplicationContext는 인터페이스 - AnnotationConfigApplicationContext는 구현체 스프링 컨테이너는 XML을 기반으로 만들 수 있고, 애노테이션 기반의 자바 설정 클래스로 만들 수 있다 스프링 컨테이너를..
[예제] 스프링 없이 좋은 객체 지향 설계하기 에서 스프링 없이 SOLID 원칙을 준수했던 코드(by AppConfig)를 스프링 기반으로 바꿔보겠다 SPRING은 DI로 《다형성 + OCP, DIP》를 가능케 한다! DI(Dependency Injection): 의존 관계, 의존성 주입 DI 컨테이너(스프링 컨테이너): 객체들을 컨테이너에 넣어놓고 의존관계를 연결하고 주입 클라이언트 코드의 변경 없이 기능 확장 쉽게 부품을 교체하듯이 개발 순수하게 자바로 OCP, DIP 원칙들을 지키면서 개발을 해보면, 결국 스프링 프레임워크를 만들게 된다. (더 정확히는 DI 컨테이너) Spring으로 전환하기 스프링 컨테이너에 객체를 스프링 빈으로 등록하고, 스프링 컨테이너에서 스프링 빈을 찾아서 사용하도록 변경해..
'좋은 객체 지향'을 예제를 통해 이해해보자. 역할과 구현을 분리하면 자유롭게 구현 객체를 조립할 수 있다 순수 자바 코드로 구현 [문제 X] SRP(단일 책임 원칙) 수행 사례 주문 서비스와 할인 계산의 책임을 분리. 그저 할인액만 받아온다. → 할인 관련 코드 변경 시 OrderService는 안 바꿔도 된다. [문제] DIP, OCP 위반 사례 DIP 위반: OrderServiceImpl이 인터페이스 뿐만 아니라 구현체에도 의존 → 구현체 변경 시 코드 변경도 수반 OCP 위반: 멤버 저장소, 할인 정책을 바꾸는 순간 코드 변경이 수반된다! 어떻게 문제를 해결할 수 있을까? DIP 위반 -> 추상(인터페이스)에만 의존하게 코드를 변경하면 된다 but.. 실제 실행을 해보면 NPE(null point..
스프링은 객체 지향 언어가 가진 강력한 특징을 살려내는 프레임워크라고 하였다. 그 강력한 특징이 뭔지부터 알아보자. 객체 지향의 특징 - 객체지향 프로그래밍은 프로그램을 유연하고 변경에 용이하게 만드므로 대규모 소프트웨어 개발에 많이 사용된다. - 세상을 '객체'들의 상호작용으로 파악하고자 하는 것. 각각의 객체는 메시지를 주고받고, 데이터를 처리한다. '유연하고 변경에 용이' 하다의 의미 레고 블록 조립하듯이, 부품 갈아 끼우듯이 컴포넌트를 쉽고 유연하게 변경하면서 개발할 수 있는 방법 → 다형성(Polymorphism): 여러 가지 형태를 가질 수 있는 능력 다형성을 만들어내기 위해: 역할과 구현으로 세상을 구분하자 자동차가 바뀌어도 운전자에게 영향을 미치지는 않는다! 자동차의 인터페이스는 동일하니까..
의존 관계? 2021.04.07 - [Spring/spring 핵심 원리] - Spring이란? controller가 service를 통해서 기능(데이터 조회 등) => '의존관계가 있다', 'XXController가 XXService를 의존한다'라고 표현한다. 이 작업을 spring스럽게 해보자! 문제가 되는 상황 매번 의존 관계를 생성자를 통해 직접 주입해준다면, 불필요하게 여러 인스턴스를 만들어야 하고, 구현체 변경시 코드를 변경해야 한다. 예를 들어 AdminController 에서도 memberRepository, memberService 객체를 만들어야 한다. 이때 동일한 memberRepository가 아닌 것도 문제가 되고, 구현체를 DBRepository로 변경할 경우 직접 관련 파일들을..