Programming/Spring

    [Spring] 여러가지 DI 방법, 의존관계 자동 주입(@Autowired)

    ※ 본문은 인프런 김영한님의 스프링 강의를 바탕으로 학습한 내용을 기록한 글입니다. 오개념이 있다면 댓글로 알려주세요! [ 1 ] 여러가지 DI 방법 (1) 생성자 주입 - 생성자 호출 시점에 딱 1번만 호출되는 것이 보장되므로 불변, 필수 의존관계에 사용하는 것이 좋다. - 생성자가 1개만 있다면 @Autowired 를 생략할 수 있다. [ Config에서 DI ] @Bean public MemberRepository memberRepository() { return new MemberRepository(); } @Bean public MemberService memberService() { return new MemberService(memberRepository()); } [ 의존 자동주입 ] @C..

    [Spring] 컴포넌트 스캔

    ※ 본문은 인프런 김영한님의 스프링 강의를 바탕으로 학습한 내용을 기록한 글입니다. 오개념이 있다면 댓글로 알려주세요! [ 1 ] 컴포넌트 스캔이란? 스프링 빈은 자바 설정 클래스에서 @Bean으로, 혹은 XML에서 으로 등록할 수 있다. 하지만, 등록해야 할 스프링 빈이 수십, 수백개가 된다면 수동으로 관리하기 힘들 것이다. 그래서 스프링은 설정 정보(@Bean, 등) 없이도 자동으로 스프링 빈을 등록해주는 '컴포넌트 스캔' 기능을 제공한다. 다음은 컴포넌트 스캔을 하는 방법이다. (1) 컴포넌트 스캔을 사용하기 위해서는 스프링 설정 클래스(AppConfig.java라고 가정)에 @ComponentScan 애노테이션을 붙여준다. (2) 컴포넌트 스캔은 @Component 애노테이션이 붙은 클래스를 스캔..

    [Spring] 싱글톤 컨테이너

    ※ 본문은 인프런 김영한님의 스프링 강의를 바탕으로 학습한 내용을 기록한 글입니다. 오개념이 있다면 댓글로 알려주세요! 스프링 컨테이너가 아닌, 순수한 DI 컨테이너 AppConfig(DI를 설정한 자바 클래스라고 가정)는 클라이언트가 요청을 할 때마다 새로운 객체를 생성하여 DI를 수행한다. 즉, 초당 1000개의 요청이 있다면 1000개의 객체가 생성된 후 소멸되며, 이는 결국 메모리 낭비를 유발한다. 이를 해결하기 위해 무수히 많은 요청이 있더라도 객체를 딱 1개만 생성한 후 해당 객체를 공유하도록 설계하는 싱글톤 패턴을 활용할 수 있다. [ 1 ] 싱글톤 패턴이란? 싱글톤 패턴은 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴이다. 즉, 자바에서는 하나의 JVM에 특정 객체의 인..

    [Spring] 스프링 컨테이너(Spring Container)

    ※ 본문은 인프런 김영한님의 스프링 강의를 바탕으로 학습한 내용을 기록한 글입니다. 오개념이 있다면 댓글로 알려주세요! [ 1 ] 스프링 컨테이너란? 스프링 컨테이너는 애노테이션 기반의 자바 설정 클래스(@Configuration)나 XML을 기반으로 만들어지며 스프링 빈을 등록, 관리, 조회하는 기능을 제공한다. 스프링 컨테이너는 ApplicationContext 인터페이스로 만들 수 있으며 애노테이션 기반의 자바 설정 클래스를 사용한다면 AnnotationConfigApplicationContext 구현 클래스를, XML 기반이라면 GenericXmlApplicationContext 구현 클래스를 사용하면 된다. ※ 최근에는 XML 보다 스프링부트를 사용하여 애노테이션 기반의 자바 설정 클래스를 주로..