[학습 봄 1] IoC 컨테이너

간략한 소개

일반 자바 프로그램은 클래스, 클래스 할당 문을 많이 가지고 그렇게 복잡 자체 매뉴얼을 필요로합니다. Bean사람들이 느슨한 결합과 같은 프로그램을 작성하려면, 그것은 또한 일반 자바 클래스, 규범인가, 그 기능을 실현할 수있는 각 클래스는, 콩은 콩의 숫자에 의해 조립 된 프로그램의 일부와 유사하다.

많은 클래스, 우리는 자주 반복 사용하지만, 초기화 및 할당 등의 작업을 반복적뿐만 아니라 비즈니스 코드에서 그것을 할 수있는 장소를 찾을 수있는 방법을 찾을 수 있습니다.

스프링 프레임으로 구성 콩, IOC 컨테이너는 자동으로 당신을 도울 것입니다 new아웃, 자동으로 빈의 라이프 사이클을 관리, 좋은 가치를 제공 할 수 있습니다. 선언, IOC 컨테이너가 자동으로 모든 구성이 완료 넣어 도움이 될 것입니다 어디에 우리는 단지에만 사용해야합니다.

콩 만들기

그것은 통상 자바 빈 클래스의 멤버 변수와 해당 세터와 게터 조성물 인 방법.

package com.yww;

public class Message {
    private String msg;

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = "this mssage is : " + msg;
    }

}

콩의 라이프 사이클

实例化 -> 填充属性 -> 调用BeanNameAware的setBean()方法 -> 调用BeanFactoryAware的setBeanFactory()方法 -> 调用ApplicationContextAware的setApplication()方法 -> 

调用BeanPostProcessor的预初始化方法 -> 调用InitializingBean的afterPropertiesSet()方法 ->

调用自定义的初始化方法 -> 

调用BeanPostProcessor的初始化方法 -> 

使用Bean ->

(容器关闭)

调用DisposableBean的destroy()方法 ->

调用自定义的销毁方法

아마 과정은, 사용 용기가 닫혀 빈 인스턴스 생성, 할당, (선박에 들어오는 예), (사용자 정의 메소드를 호출) (파괴의 사용자 정의 메소드를 호출)입니다.

해당 인터페이스 후 괄호 빈 구현을 필요로하는 추가 작업이 실현 될 수있다.

콩 범위

콩은 구성 파일로 제공 될 수있다 scope범위.

가능한 값 singleton(싱글), prototype(모든 새로운), request(각각의 새로운 세계), session(세션 공유 당), (Protlet에 대한) 글로벌 세션.

상속 Bean 정의

콩을 지정할 수 있습니다 parent또 다른 빈을 지정하는 것은 id이 상속되도록 다시.

거기에 자바 파일에 상속 재산은 없지만, 상속 효과는 구성 파일에 달성 될 수있다, 또는 당신이 회원에게 부모 클래스를 서브 클래 싱 할 수 있지만. 그러나 이는 서브 클래스는 부모 클래스의 멤버를 필요로한다.

콩 포스트 프로세서

상속을 통해 콩 BeanPostProcessor인터페이스는 우리가 일부 사용자 지정 작업 콩 초기화 및 파괴를 수행 할 수 있습니다.

IoC 컨테이너

스프링 컨테이너는 자신의 전체 수명주기를 관리, 그들을 구성을 조립, 객체를 생성 할 책임이있다.

스프링은 두 가지로, 복수의 용기를 실현할 온다.

  • 콩 식물은 ( org.springframework.beans.factory.beanFactory) 간단한 컨테이너, 가장 기본적인 DI 지원을 제공합니다.
  • 애플리케이션 컨텍스트 ( org.springframework.context.ApplicationContextBeanFactory에 기반) 서비스의 어플리케이션 프레임 워크 레벨을 제공 생성된다. (이러한 속성 정보로 파일과이자의 응용 프로그램 이벤트를 게시하는 텍스트 이벤트 리스너를 구문 분석)

봄의 BeanFactory 컨테이너

BeanFactory로는 발견하기 위해 다른 개체의 도움을 필요로 .xml파일을.

// ...
XmlBeanFactory factory = new XmlBeanFactory(new ClassPathResource("beans.xml"));
Message msg = (Message)factory.getBean("messge1");
// ...

ClassPath그것은이다 src/경로.

봄의 ApplicationContext 容器

같은 스프링 애플리케이션 컨텍스트의 많은 종류가 있습니다 :

  • AnnotationConfigApplicationContext : 구성 클래스의로드 스프링 자바 애플리케이션 컨텍스트 기반.
  • AnnotationConfigWebApplicationContext : 구성 자바 클래스에서로드 스프링 웹 기반 애플리케이션 컨텍스트.
  • ClassPathXmlApplicationContext는 : XML 구성 파일은 컨텍스트 클래스 경로에서로드됩니다.
  • FileSystemXmlapplicationContext : 파일 시스템의 XML 설정 파일에서로드 컨텍스트.
  • XmlWebApplicationContext이 : 웹 응용 프로그램에서 XML 설정 파일에서로드 컨텍스트.
// ...
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
ApplicationContext context = new FileSystemXmlApplicationContext("/home/yww/beans.xml");
ApplicationContext context = new AnnotationConfigApplicationContext(MessageConfig.class);

Message msg = (Message)context.getBean("messge1");
// ...

이 응용 프로그램 컨텍스트의 몇 가지 예는, 대신에 웹에, 응용 프로그램에서 사용할 수 있습니다.

AnnotationConfigWebApplicationContext에서 구성 할 수 있습니다 중간, 그래서 의 사용을 대체 .web.xml<context-param>ContextLoaderListenerAnnotationConfigWebApplicationContextXmlWebApplicationContext

추천

출처www.cnblogs.com/maplesnow/p/11620259.html