spring (6) 썸네일형 리스트형 [인프런]스프링 핵심원리 기본편_빈 스코프 빈 스코프 스프링 빈은 기본적으로 싱글톤 스코프로 생성된다. 이 덕분에 스프링 빈이 스프링 컨테이너의 시작과 함께 생성되어서 컨테이너가 종료될 때 까지 유지된다. 스코프는 빈이 존재할 수 있는 범위를 의미한다. 스프링은 다음과 같은 다양한 스코프를 지원한다. 싱글톤 기본 스코프이며 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프이다. 프로토 타입 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프이다. 웹 관련 스코프 "request": 웹 요청이 들어오고 나갈때까지 유지되는 스코프이다. "session": 웹 세션이 생성되고 종료될때 까지 유지되는 스코프이다. "application" : 웹의 서블릿 컨텍스와 같은 범위로.. [인프런]스프링 핵심원리 기본편_스프링 컨테이너와 스프링 빈(스프링 빈 설정 메타 정보 - BeanDefinition) BeanDefinition 1. 스프링이 다양한 설정 형식을 지원하기 위한 주요 기능 중 하나로, 추상화이다. 2. 역할과 구현을 개념적으로 나눈 것이다. 스프링 컨테이너는 자바 코드인지, xml 인지 몰라도 된다. 오직 BeanDefinition 만 알면 된다. 3. BeanDefinition을 빈 설정 메타정보라고 한다. @Bean(자바), (xml) 하나당 하나씩의 메타 정보가 생성된다. 4. 스프링 컨테이너는 이 메타정보를 기반으로 스프링 빈을 생성한다. 5. BeanDefinition은 인터페이스(구현체)이고, 스프링 컨테이너는 이 추상화만을 의존하면 된다. 아래 이미지를 통해 더 자세히 알아보자. 1. AnnotationConfigApplicationContext 는 AnnotatedBeanD.. [인프런]스프링 핵심원리 기본편_스프링 컨테이너와 스프링 빈(BeanFactory와 ApplicationContext) BeanFactory와 ApplicationContext [ BeanFactory ] 1. 스프링 컨테이너의 최상위 인터페이스다. 2. 스프링 빈을 관리하고 조회하는 역할을 한다. 3. getBean() 을 제공한다. 4. BeanFactory 를 직접 사용할 일은 거의 없다. [ ApplicationContext] 1. BeanFactory에 부가 기능을 더한 것이다. 2. BeanFactory 기능을 모두 상속받아서 제공한다. 3. 주로 부가 기능이 포함된 ApplicationContext를 사용한다. [ ApplicationContext 가 제공하는 부가기능] 1. MessageSource : 메시지 소스를 활용한 국제화 기능이다. 한국에서 들어오면 한국어로, 영어권에서 들어오면 영어로 출력하는 기.. [인프런]스프링 핵심원리 기본편_스프링 컨테이너와 스프링 빈(스프링 컨테이너 생성) 스프링 컨테이너 생성 스프링 컨테이너를 생성하는 코드는 다음과 같다. ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); 1. ApplicationContext 를 스프링 컨테이너라고 하며 이는 인터페이스이다. 2. 인터페이스이기 때문에 다형성이 적용되어 있다. 3. 스프링 컨테이너는 XML을 기반으로 만들 수 있고, 어노테이션 기반의 자바 설정 클래스로도 만들 수 있다. 4. 최근에는 XML 기반으로는 잘 쓰이지 않는다. 스프링 컨테이너 생성과정 [ 1. 스프링 컨테이너 생성 ] 1. 스프링 컨테이너를 생성하여 만들면, 그 안에 스프링 빈 저장소가 생긴다. 2. 스프링 빈 저장소에는.. [인프런]스프링 핵심원리 기본편_IoC, DI, 그리고 컨테이너 제어의 역전 IoC(Inversion of Control) 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것을 제어의 역전(IoC)라고 한다. 1. 기존 프로그램은 클라이언트 구현 객체가 스스로 필요한 서버 구현 객체를 생성하고, 연결하고, 실행했다. 2. 즉 구현 객체가 프로그램의 제어 흐름을 스스로 조종했다. 3. 반면에 AppConfig가 등장한 이후에 구현 객체는 자신의 로직을 실행하는 역할만 담당한다. 4. 이를 통해 프로그램의 제어 흐름은 AppConfig가 가져가게 된다. 5. 예를 들어 ~ServiceImpl 들은 필요한 인터페이스를 호출하지만 그에 대해 어떤 구현 객체들이 실행될지는 모른다. AppConfig로 분리하기 이전 코드 : private final Test.. [인프런]스프링 핵심원리 기본편_스프링이란? 스프링이란 스프링이란 여러 기술들의 모음을 말한다. 여기서 여러 기술들이란 필수적인 기술과 선택적인 기술로 나뉘는데, 몇개의 예시를 가져오자면 다음과 같다. 필수 : 스프링 프레임워크, 스프링 부트 선택 : 스프링 데이터, 스프링 세션, 스프링 시큐리티, 스프링 Rest Docs, 스프링 배치, 스프링 클라우드 이에 대해 간략하게 정리했다. 스프링 데이터 : CRUD를 좀 더 편하게 할 수 있도록 도와주는 것이다. ex) spring Data JPA 스프링 세션 : 세션 기능을 더 편하게 쓸 수 있도록 도와주는 것이다. 스프링 시큐리티 : 보안과 관련된 기술이다. 스프링 Rest Docs : API 문서화를 편리하게 해 주는 것이다. 스프링 배치 : 배치 처리에 특화된 기술이다. (배치 처리란, 데이터가.. 이전 1 다음