| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 31 |
- 알고리즘
- AWS SAA-C03 합격후기
- 백준
- 클래스 로더 계층
- aws saa-c03
- python
- 딕셔너리
- 코딩테스트
- 파이썬
- 심볼릭 레퍼런스
- Spring
- stop the world
- getreference
- 파이썬 리스트 메서드
- 객체지향
- 파이썬 문자열 메서드
- 플랫폼 클래스 로더
- BFS
- 부트스트랩 클래스 로더
- python list method
- 다이렉트 레퍼런스
- 스프링 컨테이너
- 자바
- java
- 컴포넌트 스캔
- 자료구조
- 어플리케이션 클래스 로더
- 2026 AWS SAA-C03
- 스프링
- dfs
- Today
- Total
목록BE Framework/SpringBasic (13)
클라우드 낚시꾼
1. @Configuration과 싱글톤이 깨지는 것처럼 보이지만... AppConfig 클래스에 @Configuration 어노테이션을 사용했다. @Configuration이 붙은 클래스는 Spring의 설정 클래스로서 스프링 컨테이너에 Bean을 등록할 수 있게 해준다. 설정 클래스 AppConfig에는 @Bean 어노테이션이 붙은 3개의 메서드가 있다. 그래서 총 3개의 Bean이 싱글톤 객체로 컨테이너에 등록될 것이다. 왼쪽 그림은 등록된 Bean들 사이의 의존관계이다. 오른쪽 코드를 보면, memberService, orderService, memberRepository를 Bean으로 등록할 때 memberRepository 메서드가 3번 호출되어 싱글톤이 깨지는 것처럼 보인다. 하지만, 실상 ..
1. 싱글톤 패턴이 필요한 이유 웹 애플리케이션은 보통 여러 고객이 동시에 요청을 한다. 순수 DI 컨테이너일 경우에는 고객이 요청을 보낼때 마다 객체를 생성할 것이다. 이능 굉장한 메모리 낭비를 유발한다. 만약, 고객 트래픽이 초당 100이 나오면 초당 100개 객체가 생성되고 소멸된다. 이런 메모리 낭비 문제 때문에 고객의 요청이 동시에 발생할 경우에는 해당 객체를 딱 1개만 생성하고, 공유하도록 설계할 필요가 있다. 이것이 바로 싱글톤 패턴이다. 2. 싱글톤 패턴과 문제점 public class SingletonService { // 클래스의 인스턴스가 1개가 되도록 보장한다. // 구체 클래스에 의존 -> OCP 위반 private static final SingletonService single..
이 글에서 BeanDefinition과 스프링 빈을 조회하는 방법을 중점으로 빈에 대하여 알아 볼 것이다. 그럼 시작해보자! 1. BeanDefinition BeanDefinition은 Spring Framework에서 빈(Bean)의 메타 정보를 나타내는 인터페이스이다. 스프링 컨테이너에 스프링 빈을 등록할 때 BeanDefinition에 의해 빈 메타정보를 설정하게 되어 있다. BeanDefinition은 빈 이름, 역할, 스코프 등 다양한 정보를 제공한다. BeanDefiniton이 제공하는 정보는 아래를 참고하자. BeanDefinition (Spring Framework 6.1.4 API) Return the current bean class name of this bean definition...
이 글에서는 IoC(제어의 역전), DI(의존관계 주입)으로 스프링 컨테이너를 이해해 볼 것이다. 차근 차근 알아가보자. 1. IoC(Inversion of Control, 제어의 역전) IoC란 프로그램의 흐름이 외부에서 제어되는 것을 뜻한다. 이것을 라이브러리와 프레임워크의 차이로 이해해보자. JAVA를 사용하다보면 Scanner, List 등과 같이 유용한 기능을 제공하는 java.util 라이브러리를 사용하게 된다. 우리가 이 라이브러리를 사용했을 때 코드의 제어는 누가 가져가는가? 개발자가 가져간다. 라이브러리를 사용하더라도 코드의 실행 흐름은 개발자가 꾸민대로 진행된다. 다음으로, 우리가 Spring 프레임워크를 사용할 때를 생각해보자. 우리는 Spring이라는 Frame에 맞춰 작업을 한다...
이 글에서는 객체 지향 설계 원칙 SRP, DIP, OCP를 어긴 예시와 이를 지키도록 고치며 SRP, DIP, OCP를 알아 볼 것이다. 그럼 시작해보자!! 1. SRP, DIP, OCP를 지키지 못한 주문 서비스 시스템 (OrderServiceImpl 클래스) 주문 서비스가 할인 정책과 의존 관계를 맺고 있다. 할인 정책을 간단히 소개하자면, 소비자가 VIP 등급이면 FixDiscountPolicy는 가격에서 1000원을 할인해주고 RateDiscountPolicy는 가격의 10% 할인해준다. 그리고 두 할인 정책 모두 BASIC 등급이면 할인 정책이 적용되지 않는다. 이 할인 정책을 사용하는 OrderServiceImpl 클래스의 구현 코드를 확인해보자. 이 클래스에서는 주문을 생성하는 create..