본문 바로가기
728x90

전체 글84

스프링 핵심 원리 기본편 - 챕터 6. 컴포넌트 스캔 Chapter 6. 컴포넌트 스캔 컴포넌트 스캔과 의존관계 자동 주입 시작하기 AppConfig와 같이 설정 정보를 통해 빈을 등록 할 수도 있었지만 등록해야 할 스프링 빈이 수십, 수백개가 되면 관리가 귀찮고 커지게 된다. 스프링에서 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공함. @ComponentScan - @Component가 붙은 클래스들을 찾아 스프링 빈으로 등록함. - AppConfig와 다르게 @Bean으로 클래스를 등록하지 않음. - @Configuration이 붙은 컴포넌트도 자동으로 빈으로 모두 들어가게 됨으로 Filter로 지금은 테스트 예제들 제거 한 상태 @Configuration // 기존 예제 코드를 살리기 위해서 Filter 사용해서 @.. 2023. 3. 19.
스프링 핵심 원리 기본편 - 챕터 5. 싱글톤 컨테이너 Chapter 5. 싱글톤 컨테이너 웹 애플리케이션과 싱글톤 스프링은 기업용 온라인 서비스 기술을 지원하기 위해서 태어남. 현재 AppConfig는 요청을 할 때 마다 객체를 새로 생성해서 사용하는 방식임. 요청이 많은 웹 애플리케이션의 경우에는 메모리 낭비가 발생하게 됨으로 해당 객체를 딱 1개만 생성하고 공유 할 수 있도록 설계해서 사용한다. 싱글톤 패턴 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴. 스프링 컨테이너를 쓰면 기본적으로 싱글톤으로 객체를 만들어서 사용 할 수 있음. 문제점 - 패턴 구현을 위한 코드가 계속 추가 됨 (getInstacne, private 생성자..) - 클라이언트가 구체 클래스에 의존해서 OCP 원칙을 위반함 - 테스트가 어려움 - 내부 속성을 변경.. 2023. 3. 19.
스프링 핵심 원리 기본편 - 챕터 4 Chapter 4. 스프링 컨테이너와 스프링 빈 스프링 컨테이너 생성 ApplicationContext(인터페이스)를 스프링 컨테이너라 한다. XML 기반으로도 만들 수 있고, 에노테이션 기반의 자바 설정 클래스로도 만들 수 있다. 스프링 컨테이너 생성(AppConfig.class - 구성 정보) -> 스프링 컨테이너 (스프링 빈 저장소) -> 빈 이름, 빈 객체 빈 이름 빈 객체 memberService MemberServiceImpl@x01 orderService OrderServiceImpl@x02 memberRepository MemoryMembmerRepository@03 빈 이름은 항상 다른 이름을 부여 해야 한다. 기존 빈을 덮어버리거나 설정에 따라 오류가 발생한다. 애매한 건 실무에서 사용.. 2023. 3. 12.
스프링 핵심 원리 기본편 - 챕터 3 Chapter 3. 스프링 핵심원리 이해2 - 객체 지향 원리 적용 유연성 없는 이전 예제를 통해서 스프링 컨테이너의 중요성을 이해함 서비스에서 인터페이스를 도입하는 것은 장단점이 있다. 구현체를 변경할 일이 전혀 없다면 인터페이스를 도입하는 것도 비용이 될 수 있다. 변하냐, 변하지 않느냐에 대한 부분에 따라서 결정한다. https://www.inflearn.com/questions/296430/memberservice-%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4-%EA%B5%AC%ED%98%84-%EC%9D%B4%EC%9C%A0 MemberService 인터페이스 구현 이유 - 인프런 | 질문 & 답변 영한선생님 궁금한게 있습니다. MemberRepository는.. 2023. 3. 10.
728x90