DI 3

DI의 두가지 방식: 생성자 방식, 세터 메서드 방식, @Configuration 설정클래스의 @Bean 설정은 항상 스프링에서 싱글톤객체로 등록함. [최범균 스프링 5] 2021-05-29

우선 빈 객체를 등록할때 설정클래스에서(@Configuration) 어떤 빈 객체의 의존 주입하는 방식은 2가지가 있다. 1.첫번째는, 앞 포스트에서 설명했던 것 처럼 생성자의 파라미터로 의존의 대상이되는 객체를 넣어주는 것이다.[ 실제@Configuration 클래스에서는 객체설정메서드(@Bean) 를 파라미터로 넘겨줌] 장점: 빈 객체를 설정할때 이미 그 클래스가 의존하는 모든 객체를 주입받기 때문에, 완벽한 상태(그 클래스가 의존하는 모든 클래스의 메서드 들을 사용가능) 에서 빈 객체를 사용 가능하다. 단점: 생성자의 파라미터 개수가 많을 경우, 어떤 객체가 들어가야할지 모를 수 있어서 생성자 코드를 직접 확인해 봐야한다....라고 책에서 주장하는데 나는 그렇게 생각하지 않는다.IntelliJ는 애..

스프링의 근원적 역할= 객체조립기, [최범균 스프링5 책] 2021-05-28

이전 포스트 들에서 DI와 의존주입하는 방법을 객체조립기에 대한 내용으로 설명했다. 그런데 난 이런 의문이 들었다. 이 책은 스프링에 대한 본격적인 기능을 바로 설명해주지 않고, DI, 객체조립기 같은 것을 알려주지? 이번 장을 공부하면서 바로 이유를 알게 되었다. 바로 스프링의 툴의 기능이 DI를 지원하는 객체 조립기 이기 때문이다. 즉, 앞선 포스트에서 자바 코드를 통해 구현한, Assembler클래스를 스프링의 힘을 빌리면 훨씬 더 표준적으로 구성할 수있어서, 유지보수성이 뛰어나다. 차이를 비교해 보기 바란다. 1. 일반 자바코드로 작성한 객체조립기. import spring.ChangePasswordService; import spring.MemberDao; import spring.MemberR..

스프링 DI 공부 및 내가 실수했던 것들[최범균의 스프링5 책](2021-05-26)

DI(DIpendency Ingection)란 '의존주입' 이라고 불린다. 여기서 의존에 대한 정의를 알아야 하는데 의존은 클래스 안에서 다른 클래스를 실행할 때, 이를 의존한다고 표현한다. 다시 정확하게 설명하자면, 의존은 한 클래스의 변경에의해 필연적으로 영향을 받는 관계를 의미한다. 즉, 의존의 대상이되는 코드의 변경이 이루어졌을때, 의존하는 메서드에 기능적, 프로그래밍적 영향을 미치면, 그건 두 클래스가 의존관계에 있다고 말할수 있다. 스프링은 이런 클래스들간의 의존관계를 관리해주는 기능을 제공한다. 대표적으로 DI 이다. 스프링의 DI없이 의존관계를 주입하려면, 어떤 클래스가 다른 클래스를 의존할때, 의존이 필요한 클래스 안에서 의존의 대상이 되는 클래스의 객체를 생성하는 방법으로 클래스간 의존..