BeanFactory를 상속받는다.
별도의 설정 정보를 이용해 빈의 생성, 관계 설정 등의 제어 작업을 총괄
각 프로젝트 폴더를 조립 (가상 배포 공간에 배포)
오브젝트 생성을 위한 IoC용 메서드라는 것을 명시
ApplicationContext의 getBean("메서드 이름")을 통해
오브젝트를 불러올 수 잇음
1.bean -> 스프링이 IoC방식으로 관리하는 오브젝트
2.BeanFactory -> 스프링의 IoC를 담당하는 핵심 컨테이너
3.ApplicationContext -> BeanFactroy를 확장한 IoC컨테이너
4.설정정보/메타정보 -> ApplicationContext가 IoC를 적용하기 위해
사용하는 메타정보
동일성 (==)
참조값을 비교(두개의 다른 참조값이 하나의 오브젝트를 가리킬 수 잇음).
동등성 (.equals())
오브젝트의 내용을 비교
동일하다면 동등하지만
동등하다고 무조건 동일하지 않음
ApplicationContext는 기본적으로 오브젝트를 Singletone으로 만든다.
한 클래스를 하나의 인스턴스만 존재하도록 강제하는 디자인 방식
싱글톤의 한계
1. private 생성자 -> 상속 못함
2. 테스트가 힘듦
3. 서버환경에서 싱글톤을 보장 못함.
4. static method -> 전역적으로 접근해 수정, 공유 가능
--> 스프링은 평범한 Class를 싱글톤으로 만들어줌 (싱글톤으로 디자인된 클래스가 아닌 평범한 클래스)
stateless 해야함
수정 가능한 변수는 로컬 변수로 지정해
각각 별도의 메모리를 쓰도록 해야함.
싱글톤 -> 컨테이너가 존재하는 동안 유지됨
A ---- > B A가 B에 의존함 B의 기능의 변경이 A의 기능에 영향을 준다는 말
모델링 시점 -> 인터페이스만 의존함
런타임 시점 -> 인터페이스의 구현체와 의존관계가 형성됨
getBean("메서드 이름") -> 오브젝트 검색 -> 주입
XML 문서의 구조 정의
태그들은 schema 에 정의돼잇음.
beans 태그를 쓰려면 해당 스키마를 선언해야함