Develop/Spring15 [Spring/기본편] 컴포넌트 스캔 컴포넌트 스캔 @ComponentScan 은 @Component 가 붙은 모든 클래스를 스프링 빈을 등록한다. 이때 스프링 빈의 기본 이름은 클래스명을 사용하되 맨 앞글자만 소문자를 사용한다. 빈 이름 기본 전략: MemberServiceImpl 클래스 → memberServiceImpl 빈 이름 직접 지정: 빈의 이름을 직접 지정하고 싶으면 @Component("memberService2") 라고 부여 가능하다. @Configuration @ComponentScan( // basePackages = "hello.core", excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Configuration.class)) .. 2024. 3. 19. [Spring/기본편] 싱글톤 컨테이너 싱글톤 기존 스프링 없는 순수한 DI 컨테이너인 AppConfig 는 요청을 할 때 마다 객체를 새로 생성한다. 예를들어 고객 트래픽이 초당 100이라면 초당 100개 객체가 생성되고 소멸된다 → 메모리낭비 따라서 해당 객체가 딱 1개만 생성되고, 공유하도록 설계하면 된다 → 싱글톤 패턴 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴 객체 인스턴스를 2개 이상 생성하지 못하도록 막아야한다. private 생성자를 사용해서 외부에서 임의로 new 키워드를 사용하지 못하도록 해야함 public class SingletonService { // 1. static 영역에 객체 1개만 생성 private static final SingletonService instance = new Singl.. 2024. 3. 19. [Spring/기본편] 스프링 빈 조회 스프링 빈 조회 class ApplicationContextBasicFindTest { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); @Test @DisplayName("빈 이름으로 조회") void findBeanByName() { MemberService memberService = ac.getBean("memberService", MemberService.class); assertThat(memberService).isInstanceOf(MemberServiceImpl.class); } @Test @DisplayName("이름 없이 타입만으로 조회") void findBea.. 2024. 3. 19. [Spring/기본편] 스프링 컨테이너 스프링 컨테이너 ApplicationContext 를 스프링 컨테이너라 한다. 기존에는 AppConfig 를 사용해서 직접 객체를 생성하고 DI를 했지만 이제부터는 스프링 컨테이너를 통해서 사용이 가능하다. 스프링 컨테이너는 @Configuration 이 붙은 AppConfig 를 설정(구성) 정보로 사용한다. 여기서 @Bean 이라 적힌 메서드를 모두 호출해서 반환된 객체를 스프링 컨테이너에 등록한다. 이렇게 등록된 객체를 스프링 빈이라 한다. 기존에는 필요한 객체를 AppConfig 를 사용해서 직접 조회했다. 지금은 스프링 컨테이너를 사용하여 필요한 스프링 빈(객체)를 찾을 수 있다. 예) applicationContext.getBean() 메서드를 사용하여 찾을 수 있다. // 스프링 컨테이너 생.. 2024. 3. 18. [Spring/기본편] 객체 지향 설계 스프링 핵심원리 객체 지향 설계 5가지원칙 SRP : 단일 책임 원칙 (single responsibility principle) → 한 클래스는 하나의 책임만 가져야 함 OCP : 개방-폐쇄 원칙 (Open/closed principle) → 기존 코드 변경x 기능추가o LSP : 리스코프 치환 원칙 (Liskov substitution principle) → 자식 객체가 부모 객체를 대체할 수 있다. ex) 컬렉션 프레임워크 ISP : 인터페이스 분리 원칙 (Interface segregation principle) → 객체는 자신이 사용하는 메서드에만 의존해야 한다. DIP : 의존관계 역전 원칙 (Dependency inversion principle) → 객체는 구체적인 객체가 아닌 추상화(추상.. 2024. 3. 18. 이전 1 2 다음