오브젝트 팩토리 : 객체의 생성 밥법을 결정하고 만들어진 오브젝트를 돌려주는 일을 하는 클래스
제어의 역전 : 프로그램의 제어 흐름 구조가 뒤바뀌는 것, 일반적으로 main() 메소드와 같이 프로그램이 시작되는 지점에서 다음에 사용할 오브젝트를 호출하고, 오브젝트를 그 오브젝트 메소드 안에서 다음에 사용할 것을 결정하고 호출하는 식으로 작업이 진행된다. 이러한 구조에서 각 오브젝트는 프로그램 흐름을 결정하거나 사용할 오브젝트를 구성하는 작업에 능동적으로 참여한다. 모든 오브젝트가 능동적으로 자신이 사용할 클래스를 결정하고 언제 어떻게 그 오브젝트를 만들지를 스스로 관장한다. 모든 종류의 작업을 사용하는 쪽에서 제어하는 구조이다. 제어의 역전이란 일반적인 제어 흐름의 개념을 뒤집어서, 오브젝트가 자신이 사용할 오브젝트를 스스로 선택하지도 생성하지도 않는다. 또한 자신도 얻허게 만들어지고 사용되는 지 알 수 없다. 모든 제어권한을 자신이 아닌 다른 대상에 위임하기 때문이다. 프로그램의 시작을 담당하는 main()과 같은 엔트리 포인트를 제외하면 모든 오브젝트는 이렇게 위임받은 제어 권한을 갖는 특별한 오브젝트에 의해 결정되고 만들어진다. 컨테이너가 적절한 시점에 오브젝트를 만들고 그 안의 메소드를 호출하기에 제어이 역전 개념이 적용되어있다. 프레임 워크나, 템플릿 메소드 패턴에서도 나타난다.
프레임 워크 : 프레임 워크가 흐름을 주도하며, 개발한 어플리케이션 코드를 사용한다.
빈 : 스프링에서 제어권을 가지고 직접 만들며, 관계를 부여하는 오브젝트 단위의 어플리케이션 컴포넌트
빈 팩토리 : 빈의 생성과 관계 설정같은 제어를 담당하는 IoC 오브젝트, 빈을 생성하고 관계를 설정하는 IoC의 기본 기능에 초점
어플리케이션 컨텍스트 : 빈팩토리를 확장한 것, 빈 팩토리 대신 주로 사용, 어플리 케이션 전반에 걸쳐 모든 구성 요소의 제어 작업을 담당하는 IoC 엔진이라는 의미에 초점, 빈(오브젝트)의 생성, 관계 설정 등의 제어 작업을 총괄
@Configuration : 어플리케이션 컨텍스트 또는 빈 팩토리가 사용할 설정정보라는 표시
@Bean : 오브젝트 생성을 담당하는 IoC용 메소드
getBean() : ApplicationContext가 관리하는 오브젝트를 요청한느 메소드, b()라는 메소드로 만들고 getBean("b",a.class)로 가져올 수 있다.
어플리케이션 컨텍스트 : IoC컨테이너, 스프링 컨테이너, 빈 팩토리라고 부르기도 한다. ApplicationContxt 인터페이스를 수현하며, ApplicationContext는 빈 팩토리가 구현하는 BeanFactory 인터페이스를 상속하였으므로 어플리케이션 컨텍스트는 인종의 빈 팩토리이다.
설정정보 : 어플리케이션 컨텍슽 또는 빈 팩토리가 IoC 적용을 위해 사용하는 메타정보
싱글톤 : 자바에서는 단점이 있기에 스프링에서는 직접 형태와 오브젝트를 만들고 관리하는 기능을 제공하는데 그것이 싱글톤 레지스트리이다. static 메소드와 private 생성자를 사용해야할 필요가 없으며, 평범한 자바 클래스를 싱글톤으로 사용할 수 있게 해준다. 객체 지향적인 설계 방식과 원칙, 디자인 패턴(싱글톤 패턴 제외) 등을 적용하는데 제약이 없다. 스프링은 IoC 컨테이너 뿐 아니라, 기존의 싱글톤패턴을 대신하여 싱글톤을 만들고 관리해주는 싱글톤 레지스트리이다.
멀티 스레드에서의 싱글톤 : 멀티 스레드 환경인 경우 무상태 방식으로 만들지 않는 경우, 자신이 사용하지 않은 값을 불러오거나 저장할 수 있기에 상태유지 방식으로 만들지 않는다.
빈의 스코프 : 기본적으로 싱글톤이 적용되어있다. 싱글놑 스코프는 컨테이너 내에 한개의 오브젝트만 만들어져서, 강제로 제거하지 않는 한 스프링 컨테이너가 존재하는 동안 유지, 프로토 타입은 컨터넹너에 빈을 요청할 때마다 매번 새로운 오브젝트를 만들어 준다. request 스코프와, session 스코프도 존재
'IT > Spring' 카테고리의 다른 글
토비 스프링 - XML 이용한 설정 (0) | 2019.10.14 |
---|---|
토비 스프링 - 의존관계 주입 (0) | 2019.10.13 |
토비 스프링 - 패턴, 객체 지향 (0) | 2019.10.12 |
인터셉터 (0) | 2019.08.27 |
Interceptor (0) | 2019.08.26 |
댓글