본문 바로가기

전체 글157

스프링 컨테이너와 생성과정 1. 스프링 컨테이너 스프링 프레임워크는 스프링의 빈을 생성하고 관리하는 컨테이너를 가지고 있다. (DI 컨테이너 역할을 한다.) (1) 스프링 컨테이너 생성 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); ApplicationContext를 스프링 컨테이너라 한다. ApplicationContext는 인터페이스이다. 자바 설정 클래스를 기반으로 스프링 컨테이너를 만들었다. 스프링 컨테이너 생성 호출 시 생성 과정에 대해서 알아보자. 2. 스프링 컨테이너의 생성 과정 (1) 스프링 컨테이너 생성 스프링 컨테이너를 생성할때 설정 클래스(AppConfig.class)를 지정해주어야 한.. 2021. 8. 16.
IoC, DI 컨테이너 1. 제어의 역전 IoC(Inversion of Control) 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것 AppConfig가 등장한 이후에 구현 객체는 자신의 로직을 실행하는 역할만 담당한다. OrderServiceImpl은 필요한 인터페이스들을 호출하지만 어떤 구현 객체들이 실행될지 모른다. 프로그램에 대한 제어 흐름에 대한 권한은 모두 AppConfig가 가지고 있다. 스프링 핵심 원리 이해2 스프링의 핵심기능을 사용하지 않은 상태로 개발을 해보고 객체지향의 원칙(OCP, DIP)을 지키기 위해 스프링 핵심 기능들이 무슨 역할을 하는지 알아보는 시간입니다. 1. 새로운 할인 정책 개발 (1) choiyeonho903.tistory.com 2. 의존관계 주입 DI(Depe.. 2021. 8. 15.
스프링 핵심 원리 이해3 1. AppConfig 리팩터링 현재 AppConfig를 보면 중복이 있고, 역할에 따른 구현이 잘 안 보인다. * 리팩터링 전 package hello.core; import hello.core.discount.DiscountPolicy; import hello.core.discount.FixDiscountPolicy; import hello.core.member.MemberRepository; import hello.core.member.MemberService; import hello.core.member.MemberServiceImpl; import hello.core.member.MemoryMemberRepository; import hello.core.order.OrderService; imp.. 2021. 8. 15.
스프링 핵심 원리 이해2 스프링의 핵심기능을 사용하지 않은 상태로 개발을 해보고 객체지향의 원칙(OCP, DIP)을 지키기 위해 스프링 핵심 기능들이 무슨 역할을 하는지 알아보는 시간입니다. 1. 새로운 할인 정책 개발 (1) Policy 고정 금액 할인이 아니라 정률% 할인으로 변경 RateDiscountPolicy (VIP인 경우 10% 할인) import hello.core.member.Grade; import hello.core.member.Member; public class RateDiscountPolicy implements DiscountPolicy { private int discountPercent = 10; @Override public int discount(Member member, int price) {.. 2021. 8. 15.
스프링 핵심 원리 이해1 스프링의 핵심기능을 사용하지 않은 상태로 개발을 해보고 객체지향의 원칙(OCP, DIP)을 지키기 위해 스프링 핵심 기능들이 무슨 역할을 하는지 알아보는 시간입니다. 1. 회원 도메인 설계 (회원 가입) (1) Entity 회원(Member) 필드 : id, name, grade 회원은 Basic과 VIP 두 가지 등급이 있다. public class Member { private Long id; private String name; private Grade grade; public Member(Long id, String name, Grade grade) { this.id = id; this.name = name; this.grade = grade; } public Long getId() { retur.. 2021. 8. 14.
객체 지향 프로그래밍과 설계 원칙(SOLID) 1. 객체 지향 프로그래밍 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다. 2. 역할과 구현을 분리 역할과 구현으로 구분하면 단순해지고, 유연 해지며 변경도 편리해진다. 장점 클라이언트는 대상의 역할(인터페이스)만 알면 된다. 클라이언트는 구현 대상의 내부 구조를 몰라도 된다. 클라이언트는 구현 대상의 내부 구조가 변경되어도 영향을 받지 않는다. 클라이언트는 구현 대상 자체를 변경해도 영향을 받지 않는다. JAVA 언어의 다형.. 2021. 8. 12.
반응형