Backend (46) 썸네일형 리스트형 [Spring] 컴포넌트 스캔 2) 기타 사항 목차 컴포넌트 스캔 - 컴포넌트 스캔과 의존관계 자동 주입 시작하기 컴포넌트 스캔 - 탐색 위치와 기본 스캔 대상 컴포넌트 스캔 - 필터 컴포넌트 스캔 - 중복 등록과 충돌 필터 includeFilters : 컴포넌트 스캔 대상을 추가로 지정. excludeFilters : 컴포넌트 스캔에서 제외할 대상을 지정 (나름 사용됨) 두가지를 사용한 예제를 만들어 보자. scan하위에 filter패키지를 생성한다. 먼저, annotation처럼 사용할 인터페이스들을 생성한다. MyExcludeComponent(인터페이스) package hello.core.scan.filter; import java.lang.annotation.*; @Target(ElementType.TYPE) @Retention(Retenti.. [Spring] 컴포넌트 스캔 1) 컴포넌트 스캔과 의존관계 주입 목차 컴포넌트 스캔 - 컴포넌트 스캔과 의존관계 자동 주입 시작하기 컴포넌트 스캔 - 탐색 위치와 기본 스캔 대상 컴포넌트 스캔 - 필터 컴포넌트 스캔 - 중복 등록과 충돌 의존 관계 자동 주입 지금까지는 @Bean이나 을 이용해 설정 정보(appConfig)에 직접 등록할 스프링 빈을 작성했다. 빈의 수가 많아지면, 등록하기도 귀찮고, 많고, 누락문제가 발생한다. 그래서 스프링은 다음과 같은 기능을 제공한다. 컴포넌트 스캔 : 스프링 설정 정보 없이 자동으로 스프링 빈을 등록해주는 기능 자동 의존관계 주입(@Autowired) : 의존관계(DI)를 자동으로 주입 즉, 컴포넌트 스캔이란, AppConfig에 @Bean으로 등록하지 않아도, 자동으로 스프링 빈으로 등록되게 해주는 방법이며, 자동 의존관계 .. [Spring] 싱글톤 컨테이너 3) @Configuration 목차 싱글톤 컨테이너 - 웹 애플리케이션과 싱글톤 싱글톤 컨테이너 - 싱글톤 패턴 (디자인패턴에서의..) 싱글톤 컨테이너 - 싱글톤 컨테이너 -> 스프링 컨테이너가 자동으로 싱글톤 패턴을 적용해줌 싱글톤 컨테이너 - 싱글톤 방식의 주의점 싱글톤 컨테이너 - @Configuration과 싱글톤 싱글톤 컨테이너 - @Configuration과 바이트코드 조작의 마법 Configuration과 싱글톤 memberSerivce()와 orderService()가 모두 호출된 상황을 떠올리자. 그림과 같이 2번 memberRepository()가 호출되며 new MemoryMemberRepository()가 실행되는 것으로 보인다. 그렇다면, singleton이 위반되는 것이 아닌가? (객체가 2번생성됨) 실제로 .. [Spring] 싱글톤 컨테이너 2) 싱글톤 방식의 주의점 목차 싱글톤 컨테이너 - 웹 애플리케이션과 싱글톤 싱글톤 컨테이너 - 싱글톤 패턴 (디자인패턴에서의..) 싱글톤 컨테이너 - 싱글톤 컨테이너 -> 스프링 컨테이너가 자동으로 싱글톤 패턴을 적용해줌 싱글톤 컨테이너 - 싱글톤 방식의 주의점 (중요) 싱글톤 컨테이너 - @Configuration과 싱글톤 싱글톤 컨테이너 - @Configuration과 바이트코드 조작의 마법 싱글톤 방식의 주의점 무상태(stateless)로 설계해야한다. 싱글톤 패턴, 싱글톤 컨테이너든 객체 인스턴스를 하나만 생성하여 공유하게 되면, 여러 클라이언트가 하나의 객체 인스턴스를 공유하기 떄문에 상태를 유지(stateful)하게 설계하면 안된다. 특정 클라이언트에 의존적인 필드가 있으면 안된다. 특정 클라이언트가 값을 변경할 수 .. [Spring] 싱글톤 컨테이너 1) 싱글톤 컨테이너의 필요성 목차 싱글톤 컨테이너 - 웹 애플리케이션과 싱글톤 싱글톤 컨테이너 - 싱글톤 패턴 (디자인패턴에서의..) 싱글톤 컨테이너 - 싱글톤 컨테이너 -> 스프링 컨테이너가 자동으로 싱글톤 패턴을 적용해줌 싱글톤 컨테이너 - 싱글톤 방식의 주의점 싱글톤 컨테이너 - @Configuration과 싱글톤 싱글톤 컨테이너 - @Configuration과 바이트코드 조작의 마법 싱글톤 패턴의 필요성 싱글톤? "객체"가 현재 나의 자바 JVM메모리 안에 하나만있어야하는 패턴 웹어플리케이션에서 왜 싱글톤이 주로 사용되는가? 애플리케이션은 종류가 매우 많은데(데몬, 배치, 웹 등등) , 스프링은 보통 웹이다 (물론 웹아닌 애플리케이션도 가능) 웹 애플리케이션은 보통 여러 고객이 동시 요청 이 매우 많이 들어옴 ( 초당 n만번.. [Spring] 스프링 컨테이너와 빈 3) 다향한 설정 형식 지원(xml) 목차 스프링 컨테이너 생성 컨테이너에 등록된 모든 빈 조회 스프링 빈 조회 - 기본 스프링 빈 조회 - 동일한 타입이 둘 이상 스프링 빈 조회 - 상속 관계 BeanFactory와 ApplicationContext 다양한 설정 형식 지원 - 자바 코드, XML 스프링 빈 설정 메타 정보 - BeanDefinition 스프링의 유연성 스프링은 자바코드 뿐 아니라 다양한 형식의 AppConfig를 지원한다. xml, 자바코드, Groovy등 지금까지는 어노테이션 기반의 자바코드로 설정정보(Config)를 넘겼다. 다른방식으로도 유연하게 활용가능하다. 그중 xml은 요즘에는 사용하지 않지만, 아직 많은 레거시 프로젝트 들이 xml로 된 경우가 있기 때문에 한번 정도 알고 넘어가도록한다. Xml을 이용한 App.. [Spring] 스프링 컨테이너와 빈 3) BeanFactory&ApplicationContext 목차 스프링 컨테이너 생성 컨테이너에 등록된 모든 빈 조회 스프링 빈 조회 - 기본 스프링 빈 조회 - 동일한 타입이 둘 이상 스프링 빈 조회 - 상속 관계 BeanFactory와 ApplicationContext 다양한 설정 형식 지원 - 자바 코드, XML 스프링 빈 설정 메타 정보 - BeanDefinition BeanFactory & ApplicationContext BeanFactory 스프링 컨테이너의 최상위 인터페이스 스프링 빈을 관리하고 조회하는 역할을 담당 getBean() 을 제공한다. (지금까지 우리가 사용했던 대부분의 기능은 BeanFactory가 제공하는 기능) ApplicationContext BeanFactory 기능을 모두 상속받아서 제공 Bean관리 / 검색 이외 수 많은 .. [Spring] 스프링 컨테이너와 빈 2) 스프링 빈 조회 목차 스프링 컨테이너 생성 컨테이너에 등록된 모든 빈 조회 스프링 빈 조회 - 기본 스프링 빈 조회 - 동일한 타입이 둘 이상 스프링 빈 조회 - 상속 관계 BeanFactory와 ApplicationContext 다양한 설정 형식 지원 - 자바 코드, XML 스프링 빈 설정 메타 정보 - BeanDefinition 스프링 빈 조회 - 기본 일단 테스트를 위한 클래스(ApplicationContextBasicFindTest)를 만들어준다. 기본적인 스프링 빈 조회는 getBean을 사용한다. ac.getBean(빈이름, 타입) ac.getBean(타입) 빈이름, 타입으로 조회 @Test @DisplayName("빈 이름으로 조회") void findBeanByName(){ MemberService mem.. 이전 1 2 3 4 5 6 다음