분류 전체보기 152

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

개요 1. 의존관계 주입이란? 2. 의존관계 검색 3. 의존관계 주입의 응용 본문 1. 의존관계 주입이란? 의존관계란 두 클래스 또는 모듈 사이에서 한쪽 방향으로 영향을 미치는 관계를 의미한다. A가 B에 의존하고 있다고 한다면 B가 변할 경우 A에게 영향이 미치는 관계이다. 반대로 A가 변한다고 해서 B가 변하지는 않는관계이다. 지금까지 작업해온 UserDao를 보면 UserDao가 ConnectionMaker에 의존하고 있는 것을 볼 수 있다. DConnectionMaker라는 클래스의 존재는 알지도 못한다. 이러한 느슨한 관계 속에서 런타임 시에는 DConnection과의 의존관계가 실체화된다. 이러한 관계를 런타임 의존관계 또는 오브젝트 의존관계라고 부르며 DConnection을 의존 오브젝트라고..

스프링 2021.05.23

11일차

오늘부터 5km를 달리기로 마음 먹었다. 점진적으로 한계의 범위를 늘려가는 것은 발전을 위해서 중요하다. IT공부도 마찬가지로 목표량을 늘려야겠다고 마음 먹었다. 나는 블로그 연재를 하며 복습하면 진도가 안나가고 진도를 빼면 블로그 연재하기를 귀찮아하게 되는 한계에 부딪히고 있었다. 이를 극복하려면 결국 다른 일은 참고 공부하는 시간을 늘리는 수밖에 없다. 마음 단단히 먹고 나아가야겠다.

10일차

사진은 시작지점에서 매일보던 블랙야크의 아이유 어제는 깃허브 커밋을 하지 못한 아쉬움이 있는 날이었다. 며칠째 밤낮을 되돌리려고 한 것과 운동으로 쌓이는 피로가 한번에 몰려와서 잠시 잠들었다가 자정을 넘겨서 일어나버렸다. 자기 전에 조금이라도 한 것을 커밋할 걸 그랬다는 아쉬움이 남았다. 오늘은 어제보다 더 나은 하루를 보낼 수 있도롣 해야겠다.

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

개요 1. DaoFactory와 애플리케이션 컨텍스트의 또다른 차이 2. 싱글톤 3. 싱글톤과 오브젝트의 상태 본문 1. DaoFactory와 애플리케이션 컨텍스트의 또다른 차이 DaoFactory와 애플리케이션 컨텍스트의 차이 중 싱글톤으로 구현되었느냐 하는 것이 있다. 설명하기에 앞서 차이를 확인할 수 있는 코드와 결과를 보도록 하겠다. 위 캡쳐본은 기존 DaoFactory로 생성한 dao1, dao2의 객체값 출력과 애플리케이션 컨텍스트로 생성한 dao3, dao4의 객체값을 비교한 것이다. 기존 DaoFactory는 객체값이 생성할 때마다 다르고 애플리케이션 컨텍스트는 같다는 걸 알 수가 있다. 이는 스프링의 경우 객체를 싱글톤으로 만들기 때문에 그렇다. 싱글톤이란 무엇이고 왜 스프링은 싱글톤으로..

스프링 2021.05.20

토비의 스프링 - 1.5 스프링IoC

개요 1. 스프링 사용 환경 설정 2. 애플리케이션 컨텍스트 작성 3. 스프링 이해 본문 1. 스프링 사용 환경 설정 이제 본격적으로 스프링을 사용해볼 차례다. 이를 위해서는 프로젝트에 라이브러리를 추가해주어야 한다. 라이브러리는 https://mvnrepository.com/ 에서 구할 수 있다. 구글링을 해보면 토비의 스프링 관련 라이브러리를 묶어서 올려놓는 블로그들도 발견할 수 있으니 일일이 검색해서 구하기 귀찮다면 그곳에서 묶음 파일을 받아서 적용해도 된다. 단 이 경우 해당 블로그에서 믿을 수 있는 라이브러리를 올려줬는지 알 수 없기에 불안한 면이 있다. 비단 바이러스를 올렸을 최악의 경우가 아니더라도 버전이 이 달라서 생기는 문제등이 있을 수도 있다. 필자도 어느 블로그에서 다운 받고 그대로 ..

스프링 2021.05.20

토비의 스프링 - 1.4 제어의 역전

개요 1. 생성의 책임, 기능을 팩토리 클래스로 분리 2. 팩토리 클래스의 기능 확장, 개선 3. 제어의 역전 이해 본문 1. 생성의 책임, 기능을 팩토리 클래스로 분리 이전 코드에서 UserDaoTest에서 D사냐 N사냐를 결정할 수 있게끔 코드를 만들었다. 그러나 UserDaoTest의 만든 본 목적은 UserDao 제대로 작동하느냐 하는 것이다. 따라서 이를 분리할 필요가 있다. 객체의 생성 방법을 결정하고 오브젝트를 돌려주는 팩토리를 만들 필요가 있는 것이다. package springbook.user.ex6.dao; //UserDao의 생성 책임을 맡은 팩토리 클래스 public class DaoFactory { public UserDao userDao() { ConnectionMaker con..

스프링 2021.05.20

9일차

9일차 달리려니까 빗방울이 조금 날렸다. 다행히 쏟아지지는 않았기에 빗속에서 달리는 참사는 없었다. 이제 장마철도 다가올 것이고 조금 고민해봐야 할 부분이 있는데 비가 쏟아지는 날에도 달릴 것인가 하는 부분이다. 여름에는 충분히 달려도 된다고 생각하지만 혼자 사는 게 아니니 부모님 눈치가 보이는 것도 사실이다. 일단 비 오는 날까지 고민 보류..

토비의 스프링 - 1.3 DAO의 확장

개요 1. 분리의 방법3 - 클래스의 분리 2. 분리의 방법4 - 인터페이스의 도입 3. 관계설정 책임의 분리 본문 1. 분리의 방법3 - 클래스의 분리 앞서 상속을 통해서 서브 클래스로 관심을 분리하는 분리 방법을 적용해보았고 그에 따른 문제점도 언급해 보았다. 슈퍼 클래스와 서브 클래스가 생각보다 긴밀한 관계이기에 현재 책에서 분리한 커넥션과 UserDao를 슈퍼 클래스와 서브 클래스로 분리한 것은 그다지 적합하지 못하다. 따라서 화끈하게 분리할 수 있도록 독립된 클래스로 분리하는 작업을 해보겠다. package springbook.user.ex4.dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Prepar..

스프링 2021.05.19

토비의 스프링 - 1.2 DAO의 분리

개요 1. 관심사의 분리의 필요성 2. 분리의 방법1 - 메소드 추출 3. 분리의 방법2 - , 상속을 통한 확장 본문 1. 관심사의 분리의 필요성 모든 것은 융통성있게 확장, 변화할 수 있게 하기 위해서이다. 한 클래스에 필요하다 싶은 대로 떠오르는 대로 코딩하면 작동이야 하겠지만 이후에 수정하거나 다른 기능을 추가하려면 어디가 어떻게 작동하는지 이해하는 것도 어렵고 코드를 수정 추가할 때 분리했을 때보다 더 많은 양의 코드를 수정해야하고, 생각대로 수정했는데 잘못 이해해서 코드가 작동하지 않는 일이 일어날 수도 있다. 이를 피하고 좀 더 효율적인 코딩을 위해서 개발자들은 여러가지 방법론을 만들었고 그 중하나가 분리이다. 변화는 한 가지 관심을 중심으로 일어나고 그 관심을 중심으로 적절히 분리할 수 있..

스프링 2021.05.19