spring配置详解-初始化销毁方法
生活随笔
收集整理的這篇文章主要介紹了
spring配置详解-初始化销毁方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
關于生命周期屬性,生命周期屬性,啥意思呢,假設咱們的bean,生命周期屬性指的是bean創建的時候,如果希望有一些初始化的工作,你可以指定一個bean的方法,為他的初始化方法,那這樣的話Spring每次創建完,這個對象會先調用一下,這個init方法,來完成初始化工作,生命周期屬性指的,咱們可以配置一個方法,作為生命周期初始化方法,那Spring會在對象創建之后,立即調用,那生命周期屬性,與初始化對應的還有一個,叫做什么呢,銷毀,也可以配置一個方法作為生命周期的銷毀方法,那么配置銷毀方法的話,那就是Spring容器在關閉前,關閉是要銷毀所有對象,關閉并銷毀容器中所有對象之前調用,作為咱們的后處理工作,那咱們上面說的屬性,叫做init-method,前處理初始化,然后呢,第二個是destory-method
那這兩個屬性非常簡單,配上一次就完事,那咱們給誰配呢,把scope屬性先去掉,然后再來一個init-method,這里來一個方法叫做init,然后再來一個方法destory-method,給他起名destory,當然起名字你知道要和誰對應啊,方法名對應,所以我們要在User里添加兩個方法,這個方法必須public void,方法名必須要和你配置的一樣,init(),咱們也就是打印一下,我是初始化方法,destory也沒啥可說的,這里方法名要一樣,destory(),銷毀方法,接下來只要測一下方法會不會調用,最基本的創建容器,獲取對象,然后打印就完事了,最后打印一句話你會發現,咱們的初始化方法,是不是調了,顯然對象剛創建,
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd "><!-- 創建方式1:空參構造方法 --><bean name="user" class="com.learn.bean.User" init-method="init" destroy-method="destory"></bean><!-- 創建方式2:靜態工廠創建 調用UserFactory的createUser方法創建名為user2的對象,放入容器--><!-- <bean name="user2" class="com.learn.b_create.UserFactory" factory-method="createUser"></bean> --><!-- 創建方式2:實例工廠創建 --><!-- <bean name="user3" factory-bean="userFactory" factory-method="createUser2"></bean> --><!-- <bean name="userFactory" class="com.learn.b_create.UserFactory"></bean> --></beans>
package com.learn.bean;/*** @author Leon.Sun*/
public class User {public User() {System.out.println("User空參構造方法");}private String name;private Integer age;public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public void init() {System.out.println("我是初始化方法!");}public void destory() {System.out.println("我是銷毀方法!");}}
/*** 測試咱們的生命周期方法* */@Testpublic void fun5() {/*** 1.創建容器*/ApplicationContext ac = new ClassPathXmlApplicationContext("com/learn/b_create/applicationContext.xml");/*** 打印user對象*/
// System.out.println(u);}
User空參構造方法
我是初始化方法!
創建出來就立刻初始化了,但是有個問題,銷毀的方法到哪去了,是這樣,現在這代碼沒銷毀太正常不過了,打印之后沒有任何代碼,這個時候等不到做銷毀的操作,這個虛擬機停了,因為主線程運行完了,你要想看到這個效果,怎么做呢,你還得加一塊代碼,ac點close方法,這個close方法是我強行打印出來的,那是因為,close方法在ApplicationContext接口里面沒有,它是聲明在我們的實現類當中的,所以我拿實現類來接收,有了容器的關閉之后,再來執行一下這個代碼
/*** 測試咱們的生命周期方法* */@Testpublic void fun5() {/*** 1.創建容器*/ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("com/learn/b_create/applicationContext.xml");/*** 打印user對象*/
// System.out.println(u);/*** 關閉容器,觸發銷毀方法*/ac.close();}
User空參構造方法
我是初始化方法!
我是銷毀方法!
銷毀方法是不是打印了,在打印完User之后打印銷毀方法,這就是咱們的生命周期,這是這兩個配置
?
總結
以上是生活随笔為你收集整理的spring配置详解-初始化销毁方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spring配置详解-scope属性
- 下一篇: spring配置详解-模块化配置