목록STUDY/Spring (22)
공부해봅시당
1.6. 싱글톤 레지스트리와 오브젝트 스코프 DaoFactory를 직접 사용하는 것과 @Configuration 어노테이션을 추가해서 스프링의 어플리케이션 컨텍스트를 통해 사용하는 것은 테스트 결과만 보자면 동일한 것 같음 하지만 스프링의 애플리케이션 컨텍스트는 기존에 직접 만들었던 오브젝트 팩토리와는 중요한 차이점이 있음 오브젝트의 동일성와 동등성 1. 동일성(identity) 비교 1) 비교 방법 : == 연산자 2) 의미 : 두 개의 오브젝트가 동일하다면 사실은 하나의 오브젝트만 존재, 두 개의 오브젝트 레퍼런스 변수를 가짐 (래퍼런스와 오브젝트의 차이는 아래 링크 참조) 2. 동등성(equivalent) 비교 1) 비교 방법 : equals() 메소드 if) equals() 메소드 따로 구현하지 ..

1.5. 스프링의 IoC 1.5.1. 오브젝트 팩토리를 이용한 스프링 IoC 애플리케이션 컨텍스트와 설정정보 스프링 빈(Bean) - 스프링이 제어권을 가지고 직접 만들고 관계를 부여하는 오브젝트 - 자바빈 또는 엔터프라이즈 자바빈(EJB)에서 말하는 빈과 비슷한 오브젝트 단위의 애플리케이션 컴포넌트를 말함 - 스프링 컨테이너가 생성과 관계설정, 사용 등을 제어해주는 제어의 역전이 적용된 오브젝트 ※ 빈 팩토리와 애플리케이션 컨텍스트는 기본적으로 같은 의미 빈 팩토리(Bean Factory) > 빈을 생성하고 관계를 설정하는 IoC의 기본 기능에 초점 - 빈의 생성과 관계설정 같은 제어를 담당하는 IoC 오브젝트 애플리케이션 컨텍스트(Application Context) > 애플리케이션 전반에 걸쳐 모든..

1.4. 제어의 역전(IoC) IoC(Inversion of Control)이라는 용어가 있다. IoC가 무엇인지 살펴보기 위해 UserDao 코드를 좀 더 개선해보겠다. 1.4.1. 오브젝트 팩토리 UserDaoTest는 기존에 UserDao가 직접 담당하던 기능, 즉 어떤 ConnectionMaker 구현 클래스를 사용할지를 결정하는 기능을 떠맡게 됨 테스트를 위한 클래스에서 다른 책임까지 떠맡게 됨 따라서 이것도 분리하는 것이 좋음 팩토리(Factory) 분리시킬 기능할 담당할 클래스를 하나 만들어보자 클래스의 역할 : 객체의 생성 방법을 결정하고 그렇게 만들어진 오브젝트를 돌려주는 것 이런 일을 하는 오브젝트를 흔히 팩토리라고 부름 디자인 패턴에서 말하는 특별한 문제를 해결하기 위해 사용되는 추상..

1.3. DAO의 확장 모든 오브젝트는 변함 하지만 오브젝트다 다 동일한 방식으로 변하는 건 아님 관심사에 따라서 분리한 오브젝트들은 제각기 독특한 변화의 특징이 있음 지금까지 데이터 액세스 로직을 어떻게 만들 것인가와 DB 연결을 어떤 방법으로 할 것인가라는 두 개의 관심을 상하위 클래스로 분리시킴 이 두 개의 관심은 변화의 성격이 다름 변화의 성격이 다르다는 말의 의미 > 변화의 이유와 시기, 주기 등이 다르다는 뜻 추상 클래스를 만들고 이를 상속한 서브클래스에서 변화가 필요한 부분을 바꿔서 쓸 수 있게 만든 이유는 이렇게 변화의 성격이 다른 것을 분리해서, 서로 영향을 주지 않은 채로 각각 필요한 시점에 독립적으로 변경할 수 있게 하기 위함 하지만 앞서 살펴본 것처럼 상속이라는 방법을 사용했다는 사..

1.2. DAO의 분리 1.2.1. 관심사의 분리 개발자가 객체를 설계할 때 가장 염두에 둬야 할 사항은 바로 미래의 변화를 어떻게 대비할 것인가이다. (유지보수에 대한 생각을 하지 않고 현재에 급급해 개발을 하다보면 바로 스파게티코드 뚝딱ㅠ) 분리와 확장을 고려한 설계를 해야 미래의 변화에 대해 유연하고 효율적으로 대처할 수 있다. 관심사의 분리(Separation of Concerns)을 객체지향에 적용해보면, 관심이 같은 것끼리는 하나의 객체 안으로 또는 친한 객체로 모이게 하고, 관심이 다른 것은 가능한 한 따로 떨어져서 서로 영향을 주지 않도록 분리하는 것이라고 할 수 있다. 1.2.2. 커넥션 만들기의 추출 UserDao의 구현된 메소드를 다시 살펴보자 UserDao의 관심사항 DB와 연결을 ..
들어가며 스프링이 가장 관심을 많이 두는 대상은 오브젝트 객체지향 설계의 기초와 원칙을 비롯해서 다양한 목적을 위해 재활용 가능한 설계 방법인 디자인 패턴, 좀 더 깔끔한 구조가 되도록 지속적으로 개선해나가는 작업인 리펙토링, 오브젝트가 기대한 대로 동작하고 있는지를 효과적으로 검증하는 데 쓰이는 단위 테스트와 같은 오브젝트 설계와 구현에 관한 여러 가지 응용 기술과 지식이 요구됨 1.1. 초난감 DAO 1.1.1. User 먼저, 사용자 정보를 저장할 오브젝트를 만들어보자. 여기서는 User 클래스로 정의하였다. User.java package springbook.user.domain; public class User ..