Tistory
스프링 핵심 원리 - 의존관계 자동주입
※ 본 포스팅은 21.11.08에 게시된 글을 이전한 것 입니다. 1. 의존관계 주입 방법 의존관계 주입은 크게 생성자 주입, 수정장 주입, 필드 주입, 일반 메서드 주입으로 4가지 방법이 있다. 1) 생성자 주입 이름 그대로 생성자를 통해서 의존관계를 주입받는 방식 (지금까지 진행한 방식) ※ 특징 : 생성자 호출 시점에 딱 1번 호출을 보장하며 불변, 필수 의존 관계에 사용 생성자가 딱 한 개만 있다면 @Autowired를 생략해도 자동 주입이 된다.(스프링 빈에만 해당) public class OrderServiceImpl implements OrderService{ private final MemberRepository memberRepository; private final DiscountPol..
스프링 핵심 원리 - 컴포넌트 스캔
※ 본 포스팅은 21.10.27에 게시된 글을 이전한 것 입니다. 1. 컴포넌트 스캔 스프링에서 설정 정보 없이 자동으로 스프링 빈을 등록하는 기능 자바에서 스프링 빈을 등록하기 위해 @Bean을 사용해야 하지만, 하나하나 등록하는 것은 번거롭다. 이러한 경우에 컴포넌트 스캔을 통해 자동으로 스프링 빈을 등록한다. @Component 애노테이션이 붙은 클래스를 스캔해 스프링 빈으로 등록한다. 2. 컴포넌트 스캔 의존 관계 주입 @Autowired는 의존 관계를 자동으로 주입해 준다 1)로그 확인: 의존관계가 주입됨을 알 수 있다. 2) 의존관계 주입 순서 ① @ComponentScan @Component 애노테이션이 붙은 모든 클래스를 스프링 빈으로 등록한다. ※@Component("원하는 이름")을 통..
스프링 핵심 원리 - 싱글톤
※ 본 포스팅은 21.10.15에 게시된 글을 이전한 것 입니다. 1. 싱글톤 패턴 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴이다. 1) 필요 이유 웹 애플리케이션은 보통 여러 고객이 동시에 요청을 한다. 싱글톤 패턴으로 설계하지 않은 프로젝트는 고객이 요청할 때마다 객체를 새로 생성한다. 다시 말해서 메모리 낭비가 심하다. 그래서 해당 객체가 오직 1개만 생성되고 공유하도록 설계하는 싱글톤 패턴을 사용하면 된다. 요즘 컴퓨터가 좋아서 속도는 늦지 않지만, 효율적으로 관리하기 위해 싱글톤 패턴을 사용한다. 2) 싱글톤 코드 package hello.core.singleton; public class SingletonService { private static final Single..
스프링 핵심 원리 - 스프링 빈
※ 본 포스팅은 21.10.14에 게시된 글을 이전한 것 입니다. 1. 스프링 빈 조회 1) 모든 빈 조회 AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); ~ String[] beanDefinitionNames = ac.getBeanDefinitionNames(); for (String beanDefinitionName : beanDefinitionNames) { Object bean = ac.getBean(beanDefinitionName); System.out.println("Name = " + beanDefinitionName+" object = "+bean); } .getB..
스프링 핵심 원리 - 스프링 컨테이너
※ 본 포스팅은 21.10.14에 게시된 글을 이전한 것 입니다. 1. 스프링 컨테이너 생성 `ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);` ApplicationContext가 스프링 컨테이너이며 인터페이스이다.(다형성 보존) 스프링 컨테이너는 XML 기반으로 만들 수도 있고 애노테이션 기반의 자바 설정 클래스로 만들 수 있다.(위 코드가 자바 설정 클래스) ※ 좀 더 정확히는 스프링 컨테이너를 부를 때 BeanFactory , ApplicationContext로 구분해서 부른다. 하지만 일반적으로 ApplicationContext를 스프링 컨테이너라고 부른다. ※ Appcon..