일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 백준 13460 Python
- Kotlin in action 5장
- Kotlin in action 10장
- 코틀린인액션
- 고급매핑
- 컨베이어 벨트 위의 로봇 Python
- 20055 컨베이어 벨트 위의 로봇
- Kotlin
- 스프링 핵심 원리 - 기본편
- KotlinInAction
- Kotlin in action 3장
- 13460 구슬탈출 2
- 스프링 핵심 원리
- 백준
- 스프링 핵심 원리 이해
- 스프링 컨테이너와 스프링 빈
- spring
- 코틀린
- 코틸린인액션
- kotlin in action 정리
- 기능개발 python
- 싱글톤 컨테이너
- 자바 ORM 표준 JPA 프로그래밍 7장
- Kotlin in action 6장
- Python
- 20055
- 7장 고급매핑
- 객체 지향 설계와 스프링
- Kotlin In Action
- 백준 20055 컨베이어 벨트 위의 로봇
- Today
- Total
목록스프링 핵심 원리 - 기본편 (5)
기록하는 습관
[ 컴포넌트 스캔과 의존관계 자동 주입 시작하기 ] 지금까지는 스프링 빈을 등록할 때 자바 코드의 @Bean이나 XML의 등을 통해서 설정 정보에 직 접 등록할 스프링 빈을 나열했다. 만약 등록해야 할 빈이 수백개가 된다면 관리하기 번거로워진다. 따라서, 스프링은 설정 정보가 없어도 자동으로! 스프링 빈을 등록하는 컴포넌트 스캔 기능을 제공한다. 의존 관계도 자동으로 주입해주는 @Autowired 기능도 제공한다. 컴포넌트 스캔(Component Scan) @Component 어노테이션이 붙은 모든 클래스를 스캔해서 스프링 빈으로 등록한다. 이 때, 스프링 빈의 기본 이름은 클래스명을 사용하되 맨 앞글자만 소문자를 사용한다. 빈 이름 기본 전략: MemberServiceImpl 클래스 -> memberS..
[ 싱글톤(Singleton) 패턴 ] 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴이다. 객체 인스턴스를 2개 이상 생성하지 못하도록 private 생성자를 사용해서 외부에서 임의로 new 키워드를 사용하지 못하도록 한다. 싱글톤 미적용 상태 스프링 없는 순수한 DI 컨테이너인 AppConfig는 요청을 할 때 마다 객체를 새로 생성한다. 만약, 고객 트래픽이 초당 100이 나오면 초당 100개 객체가 생성되고 소멸된다.. -> 메모리 낭비가 심함! 싱글톤 적용 상태 이 객체 인스턴스가 필요하면 오직 getInstance() 메서드를 통해서만 조회 할 수 있다. 이 메서드를 호출하면 항상 같은 인스턴스를 반환한다. [ 싱글톤 패턴 문제점 ] 싱글톤 패턴을 구현하는 코드 자체가 많이 ..
[ Spring Container(스프링 컨테이너) ] ApplicationContext 를 스프링 컨테이너라 한다. 스프링 컨테이너는 @Configuration이 붙은 AppConfig를 설정(구성) 정보로 사용한다. 여기서 @Bean이라 적힌 메서드를 모두 호출해서 반환된 객체를 스프링 컨테이너에 등록한다. 이렇게 스프링 컨테이너에 등록된 객체를 스프링 빈이라 한다. 스프링 빈은 @Bean 이 붙은 메서드의 명을 스프링 빈의 이름으로 사용한다. ( memberService , orderService ) 스프링 빈은 applicationContext.getBean() 메서드 를 사용해서 찾을 수 있다. 스프링 컨테이너 생성 ApplicationContext를 스프링 컨테이너라 하고 인터페이스이다. 스프..
[ 들어가며 ] 이번 프로젝트는 순수 Java를 활용한 코드로, Spring 요소가 들어가지 않음. DI와 DI Container가 어떤 역할을 하는지 아는 것이 핵심. SOLID 관점에서 DI 적용 전/후를 비교해서 보는 것이 핵심. [ 비즈니스 요구사항과 설계 ] 회원 회원을 가입하고 조회할 수 있다. 회원은 일반과 VIP 두 가지 등급이 있다. 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. (미확정) 주문과 할인 정책 회원은 상품을 주문할 수 있다. 회원 등급에 따라 할인 정책을 적용할 수 있다. 할인 정책은 모든 VIP는 1000원을 할인해주는 고정 금액 할인을 적용해달라. (나중에 변경 될 수 있 다.) 할인 정책은 변경 가능성이 높다. 회사의 기본 할인 정책을 아..
[ 좋은 객체 지향 설계의 5가지 원칙 (SOLID 원칙) ] 클린코드로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정리 SRP(Single Responsibility Principle) : 단일 책임 원칙 OCP(Open/Closed Principle) : 개방 폐쇄 원칙 LSP(Liskov Substitution Principle) : 리스코프 치환 원칙 ISP(Interface Segregation Principle) : 인터페이스 분리 원칙 DIP(Dependency Inversion Principle) : 의존 관계 역전 원칙 1. SRP(Single Responsibility Principle) : 단일 책임 원칙 하나의 클래스는 하나의 책임만 가져야 한다. 변경이 있을 때 영..