BackEnd/Spring & Springboot Study

    [토비의 스프링] 1.7 의존관계 주입(DI)

    스프링을 IoC 컨테이너로 적용하는 방법과 싱글톤 저장소로서의 특징을 살펴봤다. 스프링의 IoC에 대해 좀 더 깊이 알아보자. 1. 제어의 역전(IoC)과 의존관계 주입 IoC는 소프트웨어에서 자주 발견할 수 있는 일반적인 개념 객체를 생성하고 관계를 맺어주는 등의 작업을 담당하는 기능을 일반화한 것이 스프링의 IoC 컨테이너 IoC라는 용어는 매우 느슨하게 정의돼서 폭넓게 사용되는 용어 스프링이 제공하는 IoC 방식을 핵심을 짚어주는 의존관계 주입(Dependency Injection)이라는, 좀 더 의도가 드러나는 이름을 사용 의존관계 주입, 의존성 주입, 의존 오브젝트 주입? 'Dependency Injection'은 여러 가지 우리말로 번역돼서 사용된다. 그중에서 가장 흔히 사용되는 용어가 의존성..

    [토비의 스프링] 1.6 싱글톤 레지스트리와 오브젝트 스코프

    오브젝트의 동일성과 동등성 자바에서 두 개의 오브젝트가 같은가라는 말은 주의해서 써야한다. 자바에서는 두 개의 오브젝트가 완전히 같은 동일한(identical) 오브젝트라고 말하는 것과, 동일한 정보를 담고 있는(equivalent) 오브젝트라고 말하는 것은 분명한 차이가 있다. 전자는 동일성(identity)비교라고 하고, 후자를 동등성(equality) 비교라고 한다. 동일성은 == 연산자로, 동등성은 equals() 메소드를 이용해 비교한다. 두 개의 오브젝트가 동일하다면 사실은 하나의 오브젝트만 존재하는 것이고 두 개의 오브젝트 레퍼런스 변수를 갖고 있을 뿐이다. 두 개의 오브젝트가 동일하지는 않지만 동등한 경우에는 두 개의 각기 다른 오브젝트가 메모리상에 존재하는 것인데, 오브젝트의 동등성 기준..

    [토비의 스프링] 1.5 스프링의 Ioc

    1. 오브젝트 팩토리를 이용한 스프링 IoC 스프링의 핵심을 담당하는 빈 팩토리 또는 애플리케이션 컨텍스트에 대해 알아보자. 더보기 애플리케이션 컨텍스트와 설정정보 빈(bean)이란? 스프링에서 스프링이 제어권을 가지고 직접 관계를 부여하는 오브젝트 자바빈 또는 엔터프라이즈 자바빈(EJB)에서 말하는 빈과 비슷한 오브젝트 단위의 애플리케이션 컴포넌트 스프링 컨테이너가 생성과 관계설정, 사용 등을 제어해주는 제어의 역전이 적용된 오브젝트 빈 팩토리(bean factory)란? 빈의 생성과 관계설정 같은 제어를 담당하는 IoC 오브젝트 보통 빈 팩토리를 확장한 애플리케이션 컨텍스트(IoC 방식에 따라 만들어진 빈 팩토리)를 사용한다. 빈을 생성하고 관계를 설정하는 IoC의 기본 기능에 초점 애플리케이션 컨텍..

    [토비의 스프링] 1.4 제어의 역전(IoC)

    IoC(Inversion of Control) 1.4.1 오브젝트 팩토리 UserDaoTest는 UserDao의 기능이 잘 동작하는지 테스트하는 클래스 현재는 ConnectionMaker 구현 클래스를 사용할지를 결정하는 기능이 들어있다. UserDao와 ConnectionMaker 구현 클래스의 오브젝트를 만드는 것 그렇게 만들어진 두 개의 오브젝트가 연결돼서 사용할 수 있도록 관계를 맺는 두 기능을 분리하자. 팩토리 객체의 생성 방법을 결정하고 그렇게 만들어진 오브젝트를 돌려주는 기능을 하는 오브젝트를 뜻함 오브젝트 생성, 오브젝트 사용의 역할과 책임을 깔끔하게 분리하는 목적으로 사용 Example Code 더보기 UserDao의 생성 책임을 맡은 팩토리 클래스 package springbook.us..

    [토비의 스프링] 1.3 DAO의 확장

    1.3.1 클래스의 분리 상속 관계로 관리했던 클래스를 별개의 클래스로 나누는 과정을 다룹니다. 더보기 상속이 아닌 별개의 클래스로 나누기 public class UserDao { private SimpleConnectionMaker simpleConnectionMaker; public UserDao() { simpleConnectionMaker = new SimpleConnectionMaker(); } public void add(User user) throws ClassNotFoundException, SQLException { Connection c = simpleConnectionMaker.makeNewConnection(); } public void get(String id) throws Cla..

    [토비의 스프링] 1.2 DAO의 분리

    1.2.1 관심사의 분리 관심사의 분리 더보기 변하는 것과 변하지 않는 것이 있는 현실과 달리 객체지향 세계는 모든 것이 변한다. 변수나 오브젝트 필드 값이 변한다는게 아니라 오브젝트에 대한 설계와 이를 구현한 코드가 변한다. 소프트웨어 개발에서 끝이란 개념은 없다. 사용자의 비지니스 프로세스와 그에 따른 요구사항은 끊임없이 바뀌고 발전한다. 애플리케이션이 기반을 두고 있는 기술도 시간이 지남에 따라 바뀌고, 운영되는 환경도 변화한다. 애플리케이션이 더 이상 사용되지 않아 폐기처분될 때가 돼야 변화는 중지한다. 그래서 개발자가 객체를 설계할 때 가장 염두에 둬야 할 사항은 바로 미래의 변화를 어떻게 대비할 것인가이다. 객체지향 기술 자체가 지니는, 변화에 효과적으로 대처할 수 있다는 기술적인 특징이 있어..