봄 도로 (14) - 빈의 라이프 사이클

수명주기는 무엇인가

파괴의 전 과정에 생존에서 (일반 객체, 봄 용기, 봄 일반적인 콩 포함) 개체의 이른바 라이프 사이클.

범위는 무엇입니까

생존의 역할 인 빈의 범위라는 Spring 컨테이너에 의해 생성 된 콩, 콩의 수명.

공통 사주 스코프 :

  1. singleton범위는 단지 전체 라이프 사이클이 인스턴스 스프링 컨테이너에서 사용할 수있는 빈 정의에 대한 빈 인스턴스를 생성합니다. 이것은 또한 기본 빈 범위 유의하십시오. 우리는이 범주에있는 빈의 앞에 보여줍니다.
  2. prototype용기로부터 제거 된 새로운마다 작성하는 데 사용되는 자바 객체 비슷 범위, 새로운 빈을 생성한다.
  3. request범위, 새로운 빈 인스턴스를 생성합니다 모든 웹 요청,이 범위는 웹 응용 프로그램에서 사용할 수 있습니다.
  4. session범위, 다른 세션에 대한 새로운 빈 인스턴스를 생성,이 범위는 웹 응용 프로그램에서 사용할 수 있습니다.

이해하기 간단하고, singleton범위, 얼마나 많은 용기에서 제거 시간에 상관없이, 개체가 닫혀 컨테이너를 알고 살아 왔습니다 검색되는 객체 인 경우, prototype범위가 각각 컨테이너에서 제거, 새로운 빈 밖으로 . request범위와 session범위는 우리가 웹 응용 프로그램의 개념 및 세션에 대한 요청을 이해할 필요가있다.

구체적인 구문 범위의 네 가지

XML의 경우, 사용 scope="xxx"빈의 지정된 범위를

<bean id="singer" class="org.maoge.Singer" scope="singleton"><bean>

주석의 경우, 콩의 범위를 지정 @Scope ( "XXX")를 사용

@Component
@Scope("singleton")
public class Singer{
}

JavaConfig에서, 또한 ( "XXX") @Scope을 사용하여 빈의 범위를 지정

게으른 초기화 및 역할

때때로 우리는 절차 콩을 많이 가지고, 일부 콩이 더 느리게 시작 (예 : 데이터베이스에 액세스 할 필요가, 당신은, 네트워크 부하 리소스에 액세스 할 부하 정보에 대한 액세스 로컬 파일에 대한 필요성이 필요합니다).

빈의이 느린 시작, 프로그램이 막 시작했거나 시작 몇 시간 동안 사용하지 않으면 가능하다. 우리는 시작 프로그램의 속도를 높일 수있는 빈 지연 시작 있습니다.

나는이 프로젝트에 발생했던 일부 빈은 네트워크 모듈과 관련된 콩 그물코는, 로딩 속도가 매우 느리고 매우 낭비적인 시스템 성능이며, 사실이 일부 고객이 사용 (사용하고, 일부 고객되지 않을 수있다 이 콩에 실어, 의심 할 여지없이 시스템 부팅 속도, 지연 초기 구성, 크게 개선 된 상황을 둔화 될 경우는,)를 사용하지 않습니다.

참고 기본적으로는, 스프링 빈 컨테이너가 시작 단계에서 생성되고, 게으른 초기화가 필요할 때 생성되는 실제 콩입니다 .

XML 구성 콩을 사용하는 경우 다음과 같이 지연 초기화 구문은 다음과 같습니다

<bean id="singer" class="org.maoge.Singer" lazy-init="true"></bean>

주석 구성 콩을 사용하는 경우 다음과 같이 게으른 초기화 구문은 다음과 같습니다

@Component
@Lazy(true)
public class Singer{
}

JavaConfig에는 (참) @Lazy가 초기화 콩을 지연하도록 배열 사용

빈을 지정하면로드 순서가 있습니다

때때로 당신은 콩 같은 콩이 관련된 것처럼 데이터베이스 액세스 로직을로드하는 순서를 지정하고 데이터베이스 인터페이스의 초기화를 완료해야합니다, 당신은 우리가 다음 첫 번째 빈을 통해 부하, 그리고 첫 번째로드 있는지 확인해야합니다, 데이터베이스 다른 콩 콩 액세스를 호출 할 필요가 두 콩.

이 시점에서 수 있도록 슬픈 요-에 의존 문법, 의존 bean2 온 bean1을 그래서이 경우에는 컨테이너 적재 bean1을 할 것이다 bean1을 종속 bean2 나타낸다.

특정 구문은 xml로 :

<bean id="bean2" class="org.maoge.test.Bean2" depends-on="bean1"></bean>

동일하게 사용할 수 있습니다 @DependsOn같은 음을 나타냅니다.

콩 생성과 파괴 콜백

빈 JDBC 캡슐화 데이터 액세스 논리는, 우리는 파괴 빈 전에 데이터베이스 연결, 데이터베이스 연결 및 닫히고을 초기화, 속성처럼 URL, 사용자, 암호와를 주입해야합니다.

이 시점에서 우리는 콩이 콩의 파괴 전에 성공 후 콜백 메소드를 콜백 메소드를 작성 사용해야합니다.

다음과 같이 XML의 특정 구문은 다음과 같습니다

<bean id="datasource" class="org.maoge.test.db" init-method="initDatasource" destroy-method="destroyDataSource"></bean>

주석을 사용하여, 다음과 같은 구문 :

public class DataSource{
  @PostConstruct//bean创建成功后回调该方法
  public void init throws Exception(){
  }
  @PreDestroy//bean销毁之前回调该方法
  public void destroy throws Exception(){
  }
}

개요

라이프 사이클 관리 일반 자바 객체는, 우리 자신에 의해 생성하고, 가비지 컬렉터가 복구 할 책임이있다.

스프링 빈 오브젝트 프레임 워크는 전체 수명주기를 설정하려는 경우 그래서, 당신이 Spring에 의해 봄의 규칙을 사용할 필요가 자신의 수명주기를 관리, 관리됩니다.

发布了327 篇原创文章 · 获赞 238 · 访问量 52万+

추천

출처blog.csdn.net/woshisangsang/article/details/104081674