반응형 Java31 [스프링 핵심 원리] 컴포넌트 스캔(@ComponentScan) 지금까지는 스프링 빈을 등록할 때 @Bean을 통해 설정 파일에 직접 등록해주었다. 그런데 등록할 빈이 수십, 수백 개가 되면 이 모든 빈을 직접 나열해가며 등록해야 할까? 스프링에서는 이 문제를 해결해주는 컴포넌트 스캔 기능을 제공한다. 컴포넌트 스캔 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공하며, 의존관계를 자동으로 주입하는 @Autowired 기능도 제공한다. package hello.core; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframew.. 2021. 12. 12. [스프링 핵심 원리] 싱글톤 컨테이너와 @Configuration 스프링은 기업용 온라인 서비스 기술을 지원하기 위해 탄생했으며, 대부분의 스프링 애플리케이션은 웹 애플리케이션이다. 웹 애플리케이션은 동시에 여러 고객이 요청을 하기 때문에 매 요청마다 객체가 생성되는 것은 매우 비효율적인 일이다. 싱글톤 패턴과 싱글톤 컨테이너 스프링이 없는 순수한 DI 컨테이너를 사용하면, 컨테이너는 요청이 올 때마다 필요한 객체를 새로 생성하게 된다. 예를 들어 고객 트래픽이 초당 100이 나오면 초당 100개의 객체가 생성되고 소멸되어 메모리 낭비가 심하다. 이를 해결하기 위해 해당 객체가 딱 1개만 생성되고, 이를 공유하도록 하는 싱글톤 패턴이 등장한다. 싱글톤 패턴 싱글톤(Singleton) 패턴은 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴이다. 따라서 .. 2021. 12. 11. [스프링 핵심 원리] 스프링 설정 파일 알아보기 - BeanFactory와 ApplicationContext, BeanDefinition 이번 포스트에서는 BeanFactory와 ApplicationContext가 무엇인지 그리고 어떤 관계가 있는지 알아볼 것이다. 또한 다양한 형식의 구성 파일을 자유롭게 사용할 수 있는 이유와 BeanDefinition에 대해서 알아보자. BeanFactory와 ApplicationContext BeanFactory는 스프링 컨테이너의 최상위 인터페이스이며, getBean()을 비롯하여 스프링 빈을 관리하고 조회하는 역할을 담당한다. ApplicationContext는 BeanFactory의 기능을 모두 상속받아서 제공한다. 동시에 다른 여러 가지 인터페이스를 상속받으며 기타 많은 부가기능을 제공한다. 몇 가지 예를 들자면 환경변수 관리, 애플리케이션 이벤트, 편리한 리소스 조회 기능 등이 있다. 정리하.. 2021. 12. 8. [스프링 핵심 원리] 스프링 컨테이너와 스프링 빈 이전 포스트에서는 간단한 자바 프로젝트를 만들어 객체 지향 원리를 적용해보았다. 이번 포스트에서는 프로젝트에 스프링을 간단히 적용해볼 것이며, 스프링 컨테이너와 스프링 빈에 대해서 알아보도록 하자. 스프링 컨테이너와 스프링 빈 스프링으로 전환하기 package hello.core; import hello.core.member.MemberRepository; import hello.core.member.MemberService; import hello.core.member.MemberServiceImpl; import hello.core.member.MemoryMemberRepository; public class AppConfig { public MemberService memberService(){ r.. 2021. 12. 7. 이전 1 2 3 4 5 ··· 8 다음 반응형