등장배경 스프링 없이 순수 java 코드로 짜면, DI 컨테이너(이전 게시물 참고)는 클라이언트가 요청을 보낼 때마다 새로운 객체를 만들어서 반환한다. 가령 고객의 트래픽이 초당 100만큼 발생하면 초당 100개의 객체가 생성되고 소멸된다. 따라서 메모리 낭비가 심하다. 이를 해결하려면 객체를 하나만 만들어 놓고 클라이언트들이 동일한 객체를 요청하면 이 객체를 반환해서, 모든 클라이언트가 하나의 객체를 공유하게끔 하면 된다. 이것이 바로 싱글톤 패턴이다. 위 코드는 싱글톤 패턴을 자바코드로 구현하는 방법 중 하나이다. static 영역에 객체를 하나 만들어 놓고, 이 객체를 사용하려면 getInstance() 메소드를 반드시 이용하게 만든다. 그리고 생성자를 private으로 선언해서 다른 곳에서 이 객..
앞서 IoC 에서 작성한 OrderServiceImpl, AppConfig 코드를 다시 한번 살펴보자. 위 코드를 보면 클래스 간 의존관계를 알 수 있다. 여기서 의존관계란, 1) 두 클래스 사이에서 어떤 클래스가 호출부(client)이고 어떤 클래스가 응답부(server)인지 혹은 2) 상속관계나 인터페이스-구현 관계를 나타낸다. 의존관계는 정적인 클래스 의존관계, 동적인 객체 의존관계로 분류된다. 정적인 클래스 의존 관계 import 코드 만으로 파악 가능. e.g. OrderServiceImpl은 MemberRepository, DiscountPolicy에 의존한다. 동적인 객체 의존 관계 어플리케이션 실행 시점(런타임)에 파악 가능. e.g. OrderService에 할인 정책으로 정액할인제를 주..
어떤 객체를 구현하면, 이 객체가 프로그램의 제어 흐름을 스스로 조종하는 것이 일반적이다. 다시 말해 필요한 다른 객체를 스스로 생성하고, 객체끼리 연결, 실행하는 것을 객체 내에서 관리한다. 위 코드를 예로 들면, OrderServiceImpl 이라는 객체는 자신이 필요한 memberRepository 객체, discountPolicy 객체를 스스로 생성한다. 이 때 MemberRepository 구현 클래스를 메모리(MemoryMemberRepository)로 하고, 할인율은 정액할인제(FixDiscountPolicy)로 한다. 이렇듯 OrderServiceImpl은 자신의 임무를 수행하면서 필요한 객체, 함수 등을 직접 생성, 호출한다. 한편 위 코드를 보면 OrderServiceImpl에 구현되어..
정의 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지 를 주고받고, 데이터를 처리할 수 있다 장점 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용됨. 객체지향의 특징으로 추상화, 캡슐화, 상속, 다형성이 있다. 이 중 다형성이 가장 중요하다. 다형성 역할 - 구현 을 구분하는 것. 운전자-자동차로 비유 K3, 아반떼, 테슬라는 자동차라는 역할을 구현한 것이다. 자동차가 K3에서 테슬라로 바뀌더라도 운전자는 문제 없이 운전할 수 있다. 공연 무대로 비유 각각의 배우는 얼마든지 대체될 수 있다. 즉, 유연하고 변경이 용이하다. 다형성 정리 클라..
스프링이란? 좁은 의미 : 스프링 DI 컨테이너 기술 혹은 스프링 프레임워크 넓은 의미 : 스프링 부트, 스프링 프레임워크 등을 포함한 스프링 생태계 스프링 프레임 워크 핵심 기술 : 스프링 DI 컨테이너, AOP, 이벤트, 기타 웹 기술 : 스프링 MVC, 스프링 WebFlux 데이터 접근 기술: 트랜잭션, JDBC, ORM 지원 테스트 : 스프링 기반 테스트 지원 스프링 부트 스프링을 편리하게 사용할 수 있도록 지원. (최근에는 기본으로 사용!) 1.단독으로 실행할 수 있는 스프링 애플리케이션 쉽게 생성 가능 2.Tomcat 웹 서버를 내장해 별도의 웹서버를 설치하지 않다도 됨 3.손쉬운 빌드 구성을 위한 starter 종속성 제공 4.스프링과 외부 라이브러리 자동 구성. -> 외부 라이브러리와 버전..
- Total
- Today
- Yesterday
- java
- 김영한
- 자바스터디
- 백기선
- 스프링
- 토비의봄TV
- 토비
- 코딩테스트
- 예외처리
- 데코레이터패턴
- ec2
- AOP
- 프로그래머스
- 자바
- 메서드레퍼런스
- gracefulshutdown
- provider
- BOJ
- SOLID
- 카카오
- 서비스추상화
- OOP
- c++
- 토비의스프링
- 프록시
- 코테
- 객체지향
- 프록시패턴
- 디자인패턴
- 템플릿콜백
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |