spring配置详解-初始化销毁方法
生活随笔
收集整理的這篇文章主要介紹了
spring配置详解-初始化销毁方法
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
關(guān)于生命周期屬性,生命周期屬性,啥意思呢,假設(shè)咱們的bean,生命周期屬性指的是bean創(chuàng)建的時(shí)候,如果希望有一些初始化的工作,你可以指定一個(gè)bean的方法,為他的初始化方法,那這樣的話Spring每次創(chuàng)建完,這個(gè)對(duì)象會(huì)先調(diào)用一下,這個(gè)init方法,來(lái)完成初始化工作,生命周期屬性指的,咱們可以配置一個(gè)方法,作為生命周期初始化方法,那Spring會(huì)在對(duì)象創(chuàng)建之后,立即調(diào)用,那生命周期屬性,與初始化對(duì)應(yīng)的還有一個(gè),叫做什么呢,銷(xiāo)毀,也可以配置一個(gè)方法作為生命周期的銷(xiāo)毀方法,那么配置銷(xiāo)毀方法的話,那就是Spring容器在關(guān)閉前,關(guān)閉是要銷(xiāo)毀所有對(duì)象,關(guān)閉并銷(xiāo)毀容器中所有對(duì)象之前調(diào)用,作為咱們的后處理工作,那咱們上面說(shuō)的屬性,叫做init-method,前處理初始化,然后呢,第二個(gè)是destory-method
那這兩個(gè)屬性非常簡(jiǎn)單,配上一次就完事,那咱們給誰(shuí)配呢,把scope屬性先去掉,然后再來(lái)一個(gè)init-method,這里來(lái)一個(gè)方法叫做init,然后再來(lái)一個(gè)方法destory-method,給他起名destory,當(dāng)然起名字你知道要和誰(shuí)對(duì)應(yīng)啊,方法名對(duì)應(yīng),所以我們要在User里添加兩個(gè)方法,這個(gè)方法必須public void,方法名必須要和你配置的一樣,init(),咱們也就是打印一下,我是初始化方法,destory也沒(méi)啥可說(shuō)的,這里方法名要一樣,destory(),銷(xiāo)毀方法,接下來(lái)只要測(cè)一下方法會(huì)不會(huì)調(diào)用,最基本的創(chuàng)建容器,獲取對(duì)象,然后打印就完事了,最后打印一句話你會(huì)發(fā)現(xiàn),咱們的初始化方法,是不是調(diào)了,顯然對(duì)象剛創(chuàng)建,
<?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 "><!-- 創(chuàng)建方式1:空參構(gòu)造方法 --><bean name="user" class="com.learn.bean.User" init-method="init" destroy-method="destory"></bean><!-- 創(chuàng)建方式2:靜態(tài)工廠創(chuàng)建 調(diào)用UserFactory的createUser方法創(chuàng)建名為user2的對(duì)象,放入容器--><!-- <bean name="user2" class="com.learn.b_create.UserFactory" factory-method="createUser"></bean> --><!-- 創(chuàng)建方式2:實(shí)例工廠創(chuàng)建 --><!-- <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空參構(gòu)造方法");}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("我是銷(xiāo)毀方法!");}}
/*** 測(cè)試咱們的生命周期方法* */@Testpublic void fun5() {/*** 1.創(chuàng)建容器*/ApplicationContext ac = new ClassPathXmlApplicationContext("com/learn/b_create/applicationContext.xml");/*** 打印user對(duì)象*/
// System.out.println(u);}
User空參構(gòu)造方法
我是初始化方法!
創(chuàng)建出來(lái)就立刻初始化了,但是有個(gè)問(wèn)題,銷(xiāo)毀的方法到哪去了,是這樣,現(xiàn)在這代碼沒(méi)銷(xiāo)毀太正常不過(guò)了,打印之后沒(méi)有任何代碼,這個(gè)時(shí)候等不到做銷(xiāo)毀的操作,這個(gè)虛擬機(jī)停了,因?yàn)橹骶€程運(yùn)行完了,你要想看到這個(gè)效果,怎么做呢,你還得加一塊代碼,ac點(diǎn)close方法,這個(gè)close方法是我強(qiáng)行打印出來(lái)的,那是因?yàn)?close方法在ApplicationContext接口里面沒(méi)有,它是聲明在我們的實(shí)現(xiàn)類當(dāng)中的,所以我拿實(shí)現(xiàn)類來(lái)接收,有了容器的關(guān)閉之后,再來(lái)執(zhí)行一下這個(gè)代碼
/*** 測(cè)試咱們的生命周期方法* */@Testpublic void fun5() {/*** 1.創(chuàng)建容器*/ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("com/learn/b_create/applicationContext.xml");/*** 打印user對(duì)象*/
// System.out.println(u);/*** 關(guān)閉容器,觸發(fā)銷(xiāo)毀方法*/ac.close();}
User空參構(gòu)造方法
我是初始化方法!
我是銷(xiāo)毀方法!
銷(xiāo)毀方法是不是打印了,在打印完User之后打印銷(xiāo)毀方法,這就是咱們的生命周期,這是這兩個(gè)配置
?
總結(jié)
以上是生活随笔為你收集整理的spring配置详解-初始化销毁方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: spring配置详解-scope属性
- 下一篇: spring配置详解-模块化配置