Spring 系列教程
- Spring 框架介紹
- Spring 框架模塊
- Spring開發環境搭建(Eclipse)
- 創建一個簡單的Spring應用
- Spring 控制反轉容器(Inversion of Control – IOC)
- 理解依賴注入(DI – Dependency Injection)
- Bean XML 配置(1)- 通過XML配置加載Bean
- Bean XML 配置(2)- Bean作用域與生命周期回調方法配置
- Bean XML 配置(3)- 依賴注入配置
- Bean XML 配置(4)- 自動裝配
- Bean 注解(Annotation)配置(1)- 通過注解加載Bean
- Bean 注解(Annotation)配置(2)- Bean作用域與生命周期回調方法配置
- Bean 注解(Annotation)配置(3)- 依賴注入配置
- Bean Java配置
- Spring 面向切面編程(AOP)
- Spring 事件(1)- 內置事件
- Spring 事件(2)- 自定義事件
在Bean XML 配置(2)- Bean作用域與生命周期回調方法配置中,介紹了使用XML配置Bean作用域與生命周期回調方法。本文介紹使用注解方式配置 Bean作用域與生命周期回調方法。
Bean作用域
spring中創建bean時,可以指定作用域。作用域有以下5種類型:
-
單例(singleton)
默認作用域,一個spring容器中只有Bean的一個實例。 -
原型(prototype)
每次獲取Bean時生成一個新的實例。 -
請求(request)
作用域是單個http請求,單個http請求只有Bean的一個實例。一旦請求完成,bean實例將被銷毀。 -
會話(session)
作用域是單個會話,單個會話只有Bean的一個實例。一旦會話結束,bean實例將被銷毀。 -
全局會話(global-session)
在Portlet應用程序中使用,每個全局會話只有Bean的一個實例。普通Servlet應用中與會話作用域無區別。
Bean的作用域用注解方式設置,可以用@Scope注解。
示例:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
@Component
@Scope("prototype") // 設置作用域
public class App {
// ...
}
使用注解指定初始化回調方法與銷毀回調方法
Spring容器負責管理Bean的生命周期,如下所示:
- 創建bean實例
- 設置bean的屬性值
- 調用初始化回調方法
- 使用Bean
- 調用銷毀回調方法
- 銷毀Bean
Bean在創建時,需要執行一些資源(數據庫、套接字、文件)申請等初始化工作,可以在Bean的初始化回調方法中處理,此方法由Spring容器調用。
同樣Bean在銷毀時,需要執行一些資源(數據庫、套接字、文件)申請等銷毀工作,可以在Bean的銷毀回調方法中處理,此方法由Spring容器調用。
初始化回調方法與銷毀回調方法可通過下面的注解指定:
@PostConstruct- 此注解指定初始化回調方法@PreDestroy- 此注解指定銷毀回調方法
示例:
package com.qikegu.demo;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
public class App {
// ...
@PostConstruct
public void init() {
System.out.println("初始化...");
}
@PreDestroy
public void close() {
System.out.println("銷毀...");
}
// ...
}
