1. 程式人生 > >spring註解開發(二) bean的生命週期

spring註解開發(二) bean的生命週期

指定類的初始化和銷燬方法

可以指定自己寫的方法

在類中寫好方法

在註解中指定

第二種方法,繼承介面實現方法

就不用再指明方法了

還可以使用註解方式

BeanPostProcessor  的使用

/**
 * bean的生命週期:
 *         bean建立---初始化----銷燬的過程
 * 容器管理bean的生命週期;
 * 我們可以自定義初始化和銷燬方法;容器在bean進行到當前生命週期的時候來呼叫我們自定義的初始化和銷燬方法
 * 
 * 構造(物件建立)
 *         單例項:在容器啟動的時候建立物件
 *         多例項:在每次獲取的時候建立物件\
 * 
 * BeanPostProcessor.postProcessBeforeInitialization
 * 初始化:
 *         物件建立完成,並賦值好,呼叫初始化方法。。。
 * BeanPostProcessor.postProcessAfterInitialization
 * 銷燬:
 *         單例項:容器關閉的時候
 *         多例項:容器不會管理這個bean;容器不會呼叫銷燬方法;
 * 
 * 
 * 遍歷得到容器中所有的BeanPostProcessor;挨個執行beforeInitialization,
 * 一但返回null,跳出for迴圈,不會執行後面的BeanPostProcessor.postProcessorsBeforeInitialization
 * 
 * BeanPostProcessor原理
 * populateBean(beanName, mbd, instanceWrapper);給bean進行屬性賦值
 * initializeBean
 * {
 * applyBeanPostProcessorsBeforeInitialization(wrappedBean, beanName);
 * invokeInitMethods(beanName, wrappedBean, mbd);執行自定義初始化
 * applyBeanPostProcessorsAfterInitialization(wrappedBean, beanName);
 *}
 * 
 * 
 * 
 * 1)、指定初始化和銷燬方法;
 *         通過@Bean指定init-method和destroy-method;
 * 2)、通過讓Bean實現InitializingBean(定義初始化邏輯),
 *                 DisposableBean(定義銷燬邏輯);
 * 3)、可以使用JSR250;
 *         @PostConstruct:在bean建立完成並且屬性賦值完成;來執行初始化方法
 *         @PreDestroy:在容器銷燬bean之前通知我們進行清理工作
 * 4)、BeanPostProcessor【interface】:bean的後置處理器;
 *         在bean初始化前後進行一些處理工作;
 *         postProcessBeforeInitialization:在初始化之前工作
 *         postProcessAfterInitialization:在初始化之後工作
 * 
 * Spring底層對 BeanPostProcessor 的使用;
 *         bean賦值,注入其他元件,@Autowired,生命週期註解功能,@Async,  BeanPostProcessor;
 */

繼承 ApplicationContextAware 的類還可以獲取 ApplicationContext

相關推薦

spring註解開發 bean生命週期

指定類的初始化和銷燬方法 可以指定自己寫的方法 在類中寫好方法 在註解中指定 第二種方法,繼承介面實現方法 就不用再指明方法了 還可以使用註解方式 BeanPostProcessor 的使用 /**  * bean的生命週期:  

spring註解開發 bean的註冊

通過註解注入bean: 實體類: 執行結果 @ComponentScans  使用: value:配置掃描的包路徑,spring會掃描這個包及其子包,也是預設情況 @Filter:配置過濾器, 設定過濾器型別,預設註解型別

總結Spring框架擴充套件點bean生命週期中的擴充套件點持續更新中...

面向業務開發的時候,程式設計師需要明白業務的邏輯,並設計程式碼結構。而在進行中介軟體開發的時候,則需要明白框架的邏輯,進行開發。 所以要開發提供給spring的中介軟體,需要知道spring中有哪些擴充套件點,好在對應的地方插入我們的功能。 1. Spring容器初始化b

Spring 註解驅動WEB 註解開發

Spring 註解驅動(二)WEB 註解開發 Spring 系列目錄(https://www.cnblogs.com/binarylei/p/10198698.html) 一、基本使用 在 Servlet 3.0 時支援註解啟動,不再需要 web.xml 配製檔案。 1.1 Servlet 3.0 註

spring註解開發 容器建立過程

傳入配置類後, 註冊配置類,主要是  refresh() public void refresh() throws BeansException, IllegalStateException { synchronized (this.startupShutdo

spring註解開發 其他擴充套件

BeanFactoryPostProcessor 這個類會在所有的bean裝配後未例項化執行  postProcessBeanFactory  方法 在BeanFactory標準初始化之後呼叫,來定製和修改BeanFactory的內容  所有的bean

spring註解開發 事務

在方法上新增  @Transactional  註解 可以手動註冊事務管理器 //註冊事務管理器在容器中     @Bean     public PlatformTransactionManag

Spring 學習筆記- Bean 的配置

# 概要 IOC & DI 概述 配置 bean 配置形式:基於 XML 檔案的方式;基於註解的方式 Bean 的配置方式:通過全類名(反射)、通過工廠方法(靜態工廠方法 & 例項工廠方法)、FactoryBean IOC 容器 Bean

Spring來一發Bean的管理

1、Bean的初始化 Spring中Bean的初始化是在ApplicationContext應用上下文載入的時候實現的,Spring通過兩種方式可以發現需要初始化的Bean,一種方式是加@Bean註解,另一種是在xml種定義Bean。 在啟動web容器時,ContextLoaderListe

Servlet學習之旅生命週期

Servlet 生命週期 Servlet 生命週期可被定義為從建立直到毀滅的整個過程。以下是 Servlet 遵循的過程: Servlet 通過呼叫 init () 方法進行初始化。 Servlet 呼叫 service() 方法來處理客戶端的請求。 Servlet

前端框架Aurelia——元件Component元件生命週期

constructor() - The view-model's constructor is called first.created(owningView: View, myView: View

vue學習 vue生命週期 vue自定義指令和過濾器

生命週期鉤子函式 vue的生命週期圖示 vue的幾個鉤子函式 直接程式碼展示: <div id="box"> {{msg}} </div> <script>

Spring註解驅動開發

AOP-AOP功能測試 /** * 切面類 * @author lfy * * @Aspect: 告訴Spring當前類是一個切面類 * */ @Aspect public class LogAspects { //抽取公共的切入點表示式 //1、本

Spring學習| Bean配置

文章目錄 1. 什麼是IoC 2. 配置Bean 2.1 配置形式 2.1.1 基於XML檔案的形式 2.1.2 基於註解的方式 2.1.2.1 元件掃描

Spring啟動流程Spring載入Bean Definition的流程

繼上篇Spring啟動流程(一) prepareRefresh() prepareRefresh();//初始化配置和環境 obtainFreshBeanFactory() // Tell the subclass to refresh the internal bean fac

Spring的學習:裝配Bean

Spring容器負責建立應用程式中的bean並通過DI來協調這些物件之間的關係。當描述bean如何進行裝配時,Spring具有非常大的靈活性,它提供了三種主要的裝配機制: 在XML中進行顯示配置 在Java中進行顯示配置 隱式的bean發現機制和自動裝配 1

Spring Boot2 精髓--Web開發

註解@PathVariable用於從請求URL中獲取引數並對映到方法引數中,如下程式碼: @Controller @RequestMapping("/user/{id}") public class HelloworldController { @Autowired

JavaWeb專案開發:Servlet+Bean+Dao+MySQL

需要使用的技術: JSP動態網頁 Servlet獲得客戶端請求、轉發請求、跳轉到下一個介面 JavaBean 業務Bean (業務邏輯具體實現類),處理業務邏輯 Dao 訪問資料庫,操作資料庫例表 (增刪查改) MySQL 資料庫 實現系統以下介面和功能: 登入 我的資

基於java的Spring容器配置@Configuration,@Bean,@Import,@ImportSource

@Bean的使用  @Bean是一個方法級別的註解類似於XML的元素,這個註解提供了一些的屬性例如 init-method, destroy-method, autowiring 和name  應用場合:@Configuration註解或者@Componen

Spring學習筆記——註解建立物件和注入屬性

一、Bean相關的註解 與SpringBean相關的註解有以下四大類: @Component:標註一個普通的Spring Bean類 @Controller:標註一個控制器元件類 @Service:標註一個業務邏輯元件類 @Repository:標註一個D