[토비의스프링] 1-7 의존관계 주입 DI
·
Spring Framework/Spring
IoC가 매우 느슨하게정의돼서 폭넓게 사용되는 용어라는 점에서 스프링이 제공하는 IoC 방식을 핵심을 짚어주는 의존관계 주입Dependency Injection이라는, 의도가 명확히 드러나는 이름을 사용하기 시작했다. 먼저 의존관계란 무엇인지 생각해보자. 두 개의 클래스 또는 모듈이 의존관계에 있다고 말할 때는 항상 방향성을 부여해줘야 한다. A -> B (A가 B에 의존하고 있다) UML에서 말하는 의존관계란 이렇게 설계 모델의 관점에서 이야기하는 것이다. 런타임 시에 오브젝트 사이에서 만들어지는 의존관계도 있다. 프로그램이 시작되고 UserDao 오브젝트가 만들어지고 나서 런타임 시에 의존관계를 맺는 대상, 즉 실제 사용대상인 오브젝트를 의존 오브젝트dependent object라고 말한다. 런타임 ..
[토비의스프링] 1-6 싱글톤 레지스트리와 오브젝트 스코프
·
Spring Framework/Spring
싱글톤 레지스트리와 오브젝트 스코프 싱글톤 레지스트리 애플리케이션 컨텍스트는 우리가 만들었던 오브젝트 팩토리와 비슷한 방식으로 동작하는 loC 컨테이너다. 그러면서 동시에 이 애플리케이션 컨텍스트는 싱글톤을 저장하고 관리하는 싱글톤 레지스트리singleton registry이기도 하다. 디자인 패턴에서 나오는 싱글톤 패턴과 비슷한 개념이지만 그 구현 방법은 확연히 다르다. (영한님 강의 ApplicationContext로 테스트 하는 것이 나왔다고 한다.) 스펙에서 강제하진 않지만, 서블릿은 대부분 멀티스레드 환경에서 싱글톤으로 동작한다. 애플리케이션 안에 제한된 수, 대개 한 개의 오브젝트만 만들어서 사용하는 것이 싱글톤 패턴의 원리다. 싱글톤패턴의 한계 private으로 바뀐 생성자는 외부에서 호출할..
[토비의스프링] 1-5 스프링의 IoC
·
Spring Framework/Spring
스프링의 IoC 스프링의 핵심을 담당하는 건, 바로 빈 팩토리 또는 애플리케이션 컨텍스트라고 불리는 것이다. 스프링에서는 빈의 생성과 관계설정 같은 제어를 담당하는 IoC 오브젝트를 빈 팩토리bean factory라고 부른다. 보통 빈 팩토리보다는 이를 좀 더 확장한 애플리케이션 컨텍스트application context를 주로 사용한다. 기존 DaoFactory 코드에는 설정정보, 예를 들어 어떤 클래스의 오브젝트를 생성하고 어디에서 사용하도록 연결해줄 것인가 등에 관한 정보가 평범한 자바 코드로 만들어져 있다. 애플리케이션 컨텍스트는 직접 이런 정보를 담고 있진 않다. 대신 별도로 설정정보를 담고 있는 무엇인가를 가져와 이를 활용하는 범용적인 IoC엔진 같은 것이라고 볼수 있다. 오브젝트 설정 방법 ..
[토비의스프링] 1장 오브젝트와 의존관계 - DAO(1)
·
Spring Framework/Spring
느낀점 스프링은 객체지향이다. 객체지향은 리팩토링을 위한 것 같다. 오늘 읽은 파트는 최범균님의 "객체지향과 디자인패턴" 책의 더 긴 버젼같다. 한 줄 요약 "스프링은 오브젝트를 어떻게 효과적으로 설계하고 구현하고, 사용하고, 이를 개선 해나갈 것인가에 대한 명쾌한 기준을 마련해준다." "리팩토링은 개발자가 직관적으로 수행할 수 있긴 하지만. 본격적으로 적용하려면 학습과 훈련 이 필요하다. 나쁜 냄새에는 어떤 종류가 있다" 내용 요약 DAO클래스의 문제점 DB에서 데이터를 가져오는 DAO클래스를 절차적으로 작성한 후 어떻게 테스트하고 어떻게 재사용할 것인지에 대해 다룬다. main()를 통한 테스트 : 처음에는 해당 DAO 클래스 내에서의 main()메서드에서 테스트하는 방법을 소개한다. 문제점 :mai..
컨트롤러, form action경로 설정
·
Spring Framework/Spring
디렉토리 구성 및 세팅 src/main/resources └ static └ templates static : 정적 파일을 관리하는 곳으로 css, fonts, images, js 폴더를 생성하고 넣는다. templates : 동적 파일을 관리하는 곳으로 html 파일을 넣는다. application.properties 관련설정 #템플릿 시작 위치 참조 spring.thymeleaf.prefix=classpath:templates/ #템플릿의 확장자 이름 참조 spring.thymeleaf.suffix=.html #해당위치에 파일이 있는지 없는지 체크 spring.thymeleaf.check-template-location=true #캐시를 남기지 않는다. spring.thymeleaf.cache=fal..