본문 바로가기

전체 글

(20)
[Spring] @Component와 컴포넌트 스캔 컴포넌트 스캔과 자동 주입 설정 앞선 글에서는 자바 코드의 @Bean이나 XML의 등을 통해서 설정 정보에 직접 등록할 스프링 빈을 나열했으나, 이렇게 할 경우 등록해야 할 스프링 빈이 수십~수백 개가 될 경우 설정 정보도 커지고 누락하는 문제가 발생할 수가 있다. 그래서 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공한다. 또한 의존관계도 자동으로 주입하는 @Autowired 기능도 제공한다. 이제부터 AutoAppConfig.java 파일을 생성하는 것부터 해서 코드로 컴포넌트 스캔과 의존관계 자동 주입을 알아보자 @Configuration @ComponentScan( excludeFilters = @ComponentScan.Filter(type = Filt..
[Spring] 스프링 컨테이너에 등록된 스프링 빈 조회 지난 글에서 스프링 컨테이너와 빈이 설정되는 것과 관련하여 살펴보았다. 이번 글에서 지난번에 설명한 스프링 컨테이너와 그리고 스프링 컨테이너에 등록된 스프링 빈을 조회하는 여러 가지 방법에 대해 살펴보려고 한다. 그러면 컨테이너에 등록된 모든 빈을 조회하는 것부터 해서 코드와 함께 하나하나 살펴보도록 하자 컨테이너에 등록된 모든 빈 조회 AppConfig.java @Configuration public class AppConfig { @Bean public MemberService memberService() { return new MemberServiceImpl(memberRepository()); } @Bean public MemberRepository memberRepository() { retur..
[Spring] 스프링 컨테이너와 스프링 빈 설정 스프링 컨테이너란? 스프링 컨테이너는 빈이라고 불리는 자바 객체를 등록하여 생성부터 소멸까지 관리해 주는 공간이다. 스프링 컨테이너를 생성할 때는 구성 정보를 지정해주어야 하며 스프링 컨테이너의 구성 정보는 xml을 기반으로 만들 수도 있고, 어노테이션을 이용해 자바 설정 클래스로 만들 수도 있으며, Groovy를 이용해서도 만들 수가 있다. 아래 내용을 통해 xml 기반과 어노테이션을 이용하여 만든 스프링 컨테이너를 비교해 보자 xml 기반의 스프링 컨테이너 최근에는 스프링 부트를 많이 사용하면서 xml 기반의 설정은 잘 사용하지 않는다. xml을 사용하면 컴파일 없이 빈 설정 정보를 변경할 수 있는 장점이 있다. 어노테이션을 이용한 자바 설정 클래스 스프링 컨테이너를 생성할 때는 구성 정보를 지정해주..
[Spring] 싱글톤 패턴과 싱글톤 컨테이너 싱글톤 패턴이란? 하나의 서비스에 대해 여러 건의 요청이 들어오더라도 해당 인스턴스를 1개만 생성하여 해당 서비스 요청들을 생성된 1개의 인스턴스로 처리하는 것이다. 웹 애플리케이션 상에서 클라이언트로부터 서비스 요청을 받게 되면 요청을 받은 인스턴스를 지속적으로 생성한다. 예를 들어 서비스 요청을 100번 받으면 100개의 인스턴스가 생성되고 요청을 1번 받으면 1개의 인스턴스가 생성된다. 이렇게 요청받은 수만큼 인스턴스를 생성하게 되면 메모리도 그만큼 많이 차지하게 된다. 이렇게 메모리를 하게 되면 자연스레 서버에도 부하가 생기게 된다. 이러한 문제점을 해결하기 위해서 싱글톤 패턴을 통해서 서비스 요청이 여러 번 들어오더라도 하나의 인스턴스로 처리하고자 한다. 아래 코드를 통해 싱글톤이 적용되지 않은..