Programming 95

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..

스프링 객체조립기(assembler), 백준 11725번 문제를 풀며 든 인접리스트에 대한 생각. [최범균 스프링 5] 2021-05-26

객체 조립기는 이전 포스트에서 내가 DI가 필요한 이유에 대해서 설명할 때, 객체생성에 사용할 클래스를 변경하기 위해(의존을 하는 클래스는 변경하지 않고) 객체를 주입하는 코드 한 곳 만 변경하는것이 DI의 장점이라고 하였다. 그렇다면 이 '한 곳'에 실제 객체를 생성하는 곳이 필요한데 그것이 바로 객체조립기이다. 백준 11725번. 그래프 구현 방법중 인접리스트의 각 배열에 저장된 리스트 요소들의 정렬에 대한 고찰. ->일단 순서를 생각한다는 것 자체가 넌센스이다. 왜냐? 인접리스트와 인접행렬 이라는 방법을 자체가 [루트노드]가 주어진 그래프를 나타내는 방법이 아니라, 단지 [노드]와 [노드]사이의 연결관계를 표현한 것이기 때문이다. ->즉, 리스트배열에 저장된 리스트요소들의 정렬순서는, dfs나 bf..

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

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

메이븐 프로젝트 POM.XML설정 및 코딩 오답.(최범균 스프링 5 프로그래밍 Chaptor 02, 2021,05,25)

우선, 스프링 프로젝트를 시작하기 위해서는 스프링의 객체를 생성해주고, 초기화해주는 종합적인 관리도구가 필요한데, 대표적으로, 메이븐,그레이들,엔트가 있다. 이 책에서는 메이븐으로 프로젝트를 시작하는 것을 다루고 있다. 우선 메이븐이나 그레이들이나 모두 동일한 폴더 구조를 사용한다. C:\spring5fs\sp5-chap02\src\main\java 구조로 이루어져 있음. 메이븐 으로 프로젝트를 만들기 위해서는 POM.XML이라는 파일을 프로젝트의 루트폴더에 두어야 한다. 이유는 모든 메이븐 프로젝트는 프로젝트의 루트폴더에 POM.XML 파일을 가지는데, 프로젝트에서 필요한 설정정보(그룹ID,스프링 버전)등을 마크업 언어로 작성한다. 그레이들은 build.gradle이라는 설정파일을 루트파일에 두어야한다..