본문 바로가기

spring11

스프링 빈 설정 메타 정보 _ BeanDefinition 스프링은 어떻게 이런 다양한 설정 형식을 지원하는 것일까? 그 중심에는 `BeanDefinition` 이라는 추상화가 있다. 방법1. 자바 코드를 읽어서 BeanDefinition을 만들면 된다. 방법2. XML을 읽어서 BeanDefinition을 만들면 된다. 즉, 스프링 컨테이너는 자바 코드인지, XML인지 몰라도 된다. 오직 BeanDefinition만 알면 된다. `BeanDefinition` 을 빈 설정 메타정보라 한다. `@Bean` , `` 당 각각 하나씩 메타 정보가 생성된다. 스프링 컨테이너는 이 메타정보를 기반으로 스프링 빈을 생성한다. 1. 자바 코드의 경우 : AnnotationConfigApplicationContext` 는 `AnnotatedBeanDefinitionReader.. 2023. 8. 11.
스프링의 다양한 설정 형식 지원 - 자바 코드 , XM 스프링 컨테이너는 다양한 형식의 설정 정보를 받아드릴 수 있게 유연하게 설계되어 있다. ex ) 자바 코드, XML, Groovy 등등 애노테이션 기반 자바 코드 설정 사용 - 일반적인 스프링 설정 방식이다. - new AnnotationConfigApplicationContext(AppConfig.class)` - `AnnotationConfigApplicationContext` 클래스를 사용하면서 자바 코드로된 설정 정보를 넘기면 된다. 지금까지 해온 것이니 실습 생략한다. XML 설정 사용 - 요즘의 스프링 부트에서는 사용하지 않지만, 과거의 레거시 프로젝트에서 주로 사용됨. - `GenericXmlApplicationContext` 를 사용하면서 `xml` 설정 파일을 넘기면 된다. 1. reso.. 2023. 8. 10.
BeanFactory와 ApplicationContext BeanFactory - 스프링 컨테이너의 최상위 인터페이스다. - 스프링 빈을 관리하고 조회하는 역할을 담당한다. - `getBean()` 을 제공한다. - 지금까지 우리가 사용했던 대부분의 기능은 BeanFactory가 제공하는 기능이다. ApplicationContext - BeanFactory 기능을 모두 상속받아서 제공한다. - 빈을 관리하고 검색하는 기능을 BeanFactory가 제공해주는데, 그러면 둘의 차이가 뭘까? 답 : 부가기능의 차이 - 애플리케이션을 개발할 때는 빈을 관리하고 조회하는 기능은 물론이고, 수 많은 부가기능이 필요하다. ApplicatonContext가 제공하는 부가기능 1. 메시지소스를 활용한 국제화 기능 - 예를 들어서 한국에서 들어오면 한국어로, 영어권에서 들어오면.. 2023. 8. 10.
Spring Basic (스피링 bean조회 기본) 스프링 컨테이너에서 스프링 빈을 찾는 가장 기본적인 조회 방법 `ac.getBean(빈이름, 타입)` `ac.getBean(타입)` 조회 대상 스프링 빈이 없으면 예외 발생 `NoSuchBeanDefinitionException: No bean named 'xxxxx' available 1. 빈 이름이 제대로 출력되는지 확인 package hello.core.beanfind; import hello.core.AppConfig; import hello.core.member.MemberService; import hello.core.member.MemberServiceImpl; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Disp.. 2023. 8. 8.
Spring Basic ( 컨테이너 구동원리 / 스프링 Bean 파보기 ) //스프링 컨테이너 생성 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); - ApplicationContext` 를 스프링 컨테이너라 한다. - `ApplicationContext` 는 인터페이스이다. - 스프링 컨테이너는 XML을 기반으로 만들 수 있고, 애노테이션 기반의 자바 설정 클래스로 만들 수 있다. //스프링 컨테이너 생성과정 //스프링 빈 등록 //컨테이너에 등록된 모든 빈 조회 //스프링 컨테이너에 실제 스프링 빈들이 잘 등록 되었는지 확인해보자. package hello.core.beanfind; import hello.core.AppConfig; import or.. 2023. 8. 7.
반응형