둘째 날 빈의 라이프 사이클

콩 수명주기 방법

우리는 콩 초기화 함수와 소멸자를 정의 할 수 있습니다, 봄이 자동으로 시작 및 종료에 그들을 호출합니다.

XML 기반의

사용법 :

    <bean id="connector" class="com.bailiban.day2.lifecycle.MyConnector"
          init-method="init" destroy-method="destroy" />
  • INIT-있어서 초기화 설정하는 단계;
  • 파괴-방법 : 삭제 방법을 설정하는 단계;

예 :

/**
 * xml配置:
 *  init-method="init" destroy-method="destroy"
 */
public class MyConnector {

    public MyConnector() {
        System.out.println("MyConnector: 调用构造函数...");
    }

    public void init() {
        System.out.println("MyConnector: 调用初始化函数,创建连接...");
    }

    public Object getConnection() {
        System.out.println("获取连接...");
        return null;
    }

    public void destroy() {
        System.out.println("MyConnector: 调用销毁函,关闭连接,清除资源...");
    }
}

테스트 :

    /**
     * 在xml文件中配置初始化和销毁方法
     *  init-method="init" destroy-method="destroy"
     */
    static void xmlTest() {
        // 在初始化Spring容器的时候,会创建MyConnector类
        // 并调用其构造函数和初始化函数
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
                "com/bailiban/day2/lifecycle/lifecycle.xml");

        // 获取MyConnector对象,并调用相关方法。
        // 注意:MyConnector对象不是在getBean方法中创建的,而是在Spring初始化时已被创建
        context.getBean(MyConnector.class).getConnection();

        // 关闭Spring容器,bean的销毁方法会被执行
        context.close();
    }

결과 :

MyConnector: 调用构造函数...
MyConnector: 调用初始化函数,创建连接...
获取连接...
MyConnector: 调用销毁函,关闭连接,清除资源...

기반 인터페이스

사용법 :

/**
 * 通过实现InitializingBean接口,创建初始化烦方法
 * 实现DisposableBean接口,创建销毁方法
 */
public class MyConnector2 implements InitializingBean, DisposableBean {

    public MyConnector2() {
        System.out.println("MyConnector: 调用构造函数...");
    }

    public Object getConnection() {
        System.out.println("获取连接...");
        return null;
    }

    @Override
    public void destroy() {
        System.out.println("MyConnector: 调用销毁函,关闭连接,清除资源...");
    }

    @Override
    public void afterPropertiesSet() throws Exception {
        System.out.println("MyConnector: 调用初始化函数,创建连接...");
    }
}
  • InitializingBean 표시 상속 인터페이스 : 고쳐 쓰기 방법에 의해 afterPropertiesSet는, 방법은 초기화하기 위해 제공된다;
  • 상속 DisposableBean 표시 인터페이스는 다음 destroy 메소드를 재정 의하여, 파괴의 방법을 설정;

테스트 :

    /**
     * 通过实现InitializingBean接口,创建初始化方法
     * 实现DisposableBean接口,创建销毁方法
     */
    static void interfaceTest() {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
                "com/bailiban/day2/lifecycle/lifecycle.xml");
        context.getBean(MyConnector2.class).getConnection();
        context.close();
    }

결과 :

MyConnector: 调用构造函数...
MyConnector: 调用初始化函数,创建连接...
获取连接...
MyConnector: 调用销毁函,关闭连接,清除资源...

노트를 바탕으로

사용법 :

/**
 * 基于注解的初始化方法和销毁方法
 */
@Component
public class MyConnector3 {

    public MyConnector3() {
        System.out.println("MyConnector: 调用构造函数...");
    }

    public Object getConnection() {
        System.out.println("获取连接...");
        return null;
    }

    @PreDestroy
    public void destroy() {
        System.out.println("MyConnector: 调用销毁函,关闭连接,清除资源...");
    }

    @PostConstruct
    public void init() throws Exception {
        System.out.println("MyConnector: 调用初始化函数,创建连接...");
    }
}
  • @PostConstruct : 초기화 방법을 설정하는 단계;
  • @PreDestroy : 삭제 방법을 설정;

XML 구성 :

<context:component-scan base-package="com.bailiban.day2.lifecycle" />

@PostConstruct를 찾을 수 그렇지 않으면, 당신의 pom.xml에 종속성을 추가해야합니다 :

        <dependency>
            <groupId>javax.annotation</groupId>
            <artifactId>javax.annotation-api</artifactId>
            <version>1.3.2</version>
        </dependency>

테스트 :

    /**
     * 基于注解的初始化方法和销毁方法
     */
    static void annotationTest() {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
                "com/bailiban/day2/lifecycle/lifecycle.xml");
        context.getBean(MyConnector3.class).getConnection();
        context.close();
    }

결과 :

MyConnector: 调用构造函数...
MyConnector: 调用初始化函数,创建连接...
获取连接...
MyConnector: 调用销毁函,关闭连接,清除资源...

추천

출처www.cnblogs.com/cheng18/p/12064425.html