본문 바로가기

Java, Spring/스프링 핵심 원리 기본

4-6. BeanFactory와 ApplicationContext ~ 4-8

AnnotationConfigApplicationContext 는 구현 클래스

 

 

getBean 같은건 다 BeanFactory가 제공하는 기능 ( 지금까지 썼던 기능은 BeanFactory의 기능 )

 

 

 

 

#ApplicationContext 가 제공하는 

1. MessageSource

2. EnvironmentCapable 

부가기능(1~4) 은 

 

 

 

 

거의 ApplicationContext만 사용한다고 생각하면 된다.

 

 

 

 

 

---------------------------------------------------------------4-7. 다양한 설정 형식 지원 - 자바 코드, XML

 

xml설정은 아 이런게 있구나~ 정도로만 이해

1. 자바코드 방법 : AppConfig.class 는 우리가 했던거 - AnnotationConfigApplicationContext

2. 과거는 xml 방법 사용 : appConfig.xml - GenericXmlApplicationContext

 

 

 

XML 방법은 요즘은 아예 사용안함.. ( 컴파일 필요없다는 장점이 있다. )

 

 

appConfig.xml

자바코드가 아닌건 다 resources에 두자!

 

"appConfig.xml" 하면 자동으로 resources 밑에 있는 appConfig.xml 파일을 읽는다.

 

 

잘 뜬다.

 

 

결론 : 스프링이 얼마나 유연하게 설정을 할 수 있나 알면 됐음 ㅋㅋ

이렇게 유연하게 ( 사용자설정 파일로도 가능 )

 

 

 

 

 

 

 

--------------------------------------------------------------- 4-8. 스프링 빈 설정 메타 정보 - BeanDefinition ( 조금 깊이있는 내용 )

 

 

 

다양한 설정이 가능한 이유 : BeanDefinition ( 빈 정보에 대한 그 자체를 추상화 )

-> AppConfig.java의 자바코드를 읽어서 BeanDefinition 을 만들면 된다.

-> appConfing.xml을 읽어서 BeanDefinition을 만들면 된다.

====역할과 구현을 개념적으로 나눈 것!!!!!!!!!!!!!!!!

 

BeanDefinition = bean 설정 메타정보

 

 

스프링 컨테이너는 BeanDefinition만 안다. ( 와 지린다.. )

 

 

 

AnnotationConfigApplicationContext.java

AnnotatedBeanDefinitionReader 가 BeanDefinition을 만듦. ( 자바코드를 메타데이터처럼 읽음 = 걍 쭉읽음(xml파일같이))

그 정보를 BeanDefinition에 담는다.

 

GenergicXmlApplicationContext.java

 

lazy : 원래 빈들은 스프링컨테이너가 뜰 때 등록되는데 실제 사용하는 시점에 스프링빈으로 등록해

scope : 기본은 singleton

빈 이름, 빈

 

 

이런 정보들이 있음. ( 빈을 만들기 위한 정보들 )

-> 이런 정보들을 이용해서 실제 인스턴스를 생성할 수 있음.

 

 

 

오 직접 BeanDefinition을 생성할 수도 있음 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

 

걍 BeanDefinition으로 추상화 되어있다고 생각하자.

 

스프링이 다양한 형태의 설정 정보를 BeanDefinition으로 추상화해서 사용하는 것

스프링이 다양한 형태의 설정 정보를 BeanDefinition으로 추상화해서 사용하는 것

스프링이 다양한 형태의 설정 정보를 BeanDefinition으로 추상화해서 사용하는 것

스프링이 다양한 형태의 설정 정보를 BeanDefinition으로 추상화해서 사용하는 것

스프링이 다양한 형태의 설정 정보를 BeanDefinition으로 추상화해서 사용하는 것

스프링이 다양한 형태의 설정 정보를 BeanDefinition으로 추상화해서 사용하는 것

스프링이 다양한 형태의 설정 정보를 BeanDefinition으로 추상화해서 사용하는 것

스프링이 다양한 형태의 설정 정보를 BeanDefinition으로 추상화해서 사용하는 것

스프링이 다양한 형태의 설정 정보를 BeanDefinition으로 추상화해서 사용하는 것

스프링이 다양한 형태의 설정 정보를 BeanDefinition으로 추상화해서 사용하는 것

스프링이 다양한 형태의 설정 정보를 BeanDefinition으로 추상화해서 사용하는 것

스프링이 다양한 형태의 설정 정보를 BeanDefinition으로 추상화해서 사용하는 것

AppConfig방식 = 팩토리메서드방식 ( 몰라도됨 )

 

Recent Posts
Popular Posts
Recent Comments