스프링 5

의존관계 주입(DI)을 통해 DIP, OCP 문제를 해결하자

이 글은 김영한 강사님의 강의와 자료를 학습한 뒤 정리하는 글입니다 생성자 주입으로 어떻게 DIP를 지키는지 보자. public class AppConfig { public MemberService memberService() { return new MemberServiceImpl(new MemoryMemberRepository()); } public OrderService orderService() { return new OrderServiceImpl( new MemoryMemberRepository(), new FixDiscountPolicy()); } } 생성자를 통해 외부(AppConfig)에서 구현 객체를 생성하고 연결해준다. MemberServiceImpl의 코드를 보면 인터페이스인 membe..

스프링 2022.02.03

SOLID 설계 원칙

이 글은 김영한 강사님의 강의와 자료를 학습한 뒤 정리하는 글입니다 객체지향 설계 원칙으로 유명한 SOLID에 대해 알아보자. S - single responsiblity principle : 단일 책임 원칙 O - open / closed principle : 개방 폐쇄 원칙 L - Liskov substituion principle : 리스코프 치환 원칙 I - Interface segregatino principle : 인터페이스 분리 원칙 D - Dependency inversion principle : 의존관계 역전 원칙 설명 참고 코드 MemberRepository m = new MemoryMemberRepository() SRP 한 클래스는 하나의 책임만 가져야 한다 -> 하나의 기능만 수행..

스프링 2022.01.25

객체 지향이란

이 글은 김영한 강사님의 강의와 자료를 학습한 뒤 정리하는 글입니다 객체 지향이란 논리적으로 같은 것들끼리 묶어서 추상화해 객체를 만들고 관리하는 것이다. 캡슐화를 통해 객체의 속성 중 일부를 감출 수도 있다. 보통 캡슐화라고 하면 속성 중 일부를 private으로 선언해서 다른 객체가 접근할 수 없게 하는 것을 의미한다. 또한 논리 단위인 객체 간에 상속도 가능하다. 생물을 상속하는 동물, 식물을 예로 들 수 있다. 이렇게 객체 지향의 특징에는 추상화, 캡슐화, 상속, 다형성이 있다. 이제 다형성에 대해 알아보자. 영어로는 polymophism이라고 한다. 위키백과에서 다형성의 정의를 가져왔다. https://ko.wikipedia.org/wiki/%EB%8B%A4%ED%98%95%EC%84%B1_(%..

스프링 2022.01.25

스프링 부트를 사용하는 이유

이 글은 김영한 강사님의 강의와 자료를 학습한 뒤 정리하는 글입니다 스프링 부트는 스프링과 어떻게 다른지에 대한 정리이다. 스프링 부트는 스프링을 편리하게 쓸 수 있게 해주는 조력자 같은 개념이다. 스프링 부트가 스프링 프로젝트를 쉽게 생성해주고 Tomcat 웹 서버를 내장해주기 때문에 별도로 웹 서버를 설치하고 구성할 필요가 없어진다. 스프링과 외부 라이브러리 구성 또한 자동으로 해주고 빌드 또한 쉬워진다. 스프링 부트 없이 프로젝트를 만들면 초기 설정에 진을 뺴야 할 것이다. 안 쓸 이유가 없다.

스프링 2022.01.25

스프링의 역사

이 글은 김영한 강사님의 강의와 자료를 학습 후 정리한 글임을 알려드립니다. 스프링이 나오기 전 자바 개발자들은 EJB를 사용했다. EJB는 Enterprise Java beans의 약자이다. 하지만 이 EJB는 너무 사용하기 복잡했다. 그렇게 회의감을 느끼던 중 로드 존슨이 순수 자바를 사용해서 만든 지금의 스프링의 기반이 되는 코드들을 책에 적어 발표한다. 많은 자바 개발자들이 이에 관심을 가졌고 스프링이라는 오픈 소스로 발전한다. 스프링(spring)은 정말로 계절 중 하나인 봄이라는 뜻을 가졌다. 자바 진영에 EJB라는 암흑기 같은 겨울이 지나고 봄이 올 거라는 기대감에 붙여진 이름이다. 스프링은 EJB 컨테이너를 대체하는 기술이라면 하이버네이트는 EJB 엔티티빈을 대체하는 기술이다. 하이버네이트..

스프링 2022.01.25