詳解Spring工廠(chǎng)特性
一、餓漢式創(chuàng)建優(yōu)勢(shì)
工廠(chǎng)創(chuàng)建之后,會(huì)將Spring配置文件中的所有對(duì)象都創(chuàng)建完成(餓漢式)。
提高程序運(yùn)行效率。避免多次IO,減少對(duì)象創(chuàng)建時(shí)間。(概念接近連接池,一次性創(chuàng)建好,使用時(shí)直接獲?。?/p>
二、生命周期方法
- 自定義初始化方法:添加“init-method”屬性,Spring則會(huì)在創(chuàng)建對(duì)象之后,調(diào)用此方法。
- 自定義銷(xiāo)毀方法:添加“destroy-method”屬性,Spring則會(huì)在銷(xiāo)毀對(duì)象之前,調(diào)用此方法。
- 銷(xiāo)毀:工廠(chǎng)的close()方法被調(diào)用之后,Spring會(huì)毀掉所有已創(chuàng)建的單例對(duì)象。
- 分類(lèi):Singleton對(duì)象由Spring容器銷(xiāo)毀、Prototype對(duì)象由JVM銷(xiāo)毀。
三、生命周期注解
初始化注解、銷(xiāo)毀注解
import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; @PostConstruct //初始化 public void init(){ System.out.println("init method executed"); } @PreDestroy //銷(xiāo)毀 public void destroy(){ System.out.println("destroy method executed"); }
四、生命周期階段
單例bean:singleton
隨工廠(chǎng)啟動(dòng)創(chuàng)建 ==》 構(gòu)造方法 ==》 set方法(注入值) ==》 init(初始化) ==》 構(gòu)建完成 ==》隨工廠(chǎng)關(guān)閉銷(xiāo)毀
多例bean:prototype
被使用時(shí)創(chuàng)建 ==》 構(gòu)造方法 ==》 set方法(注入值) ==》 init(初始化) ==》 構(gòu)建完成 ==》JVM垃圾回收銷(xiāo)毀
五、用例
User實(shí)體類(lèi)
package com.cos.qf.entity; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; import java.util.*; public class User { private Integer id; private String password; private String sex; private Integer age; private Date bornDate; private String[] hobbys; private Set<String> phones; private List<String> names; private Map<String,String> countries; private Properties files; @PostConstruct //初始化 public void init(){ System.out.println("被初始化了"); } @PreDestroy //銷(xiāo)毀 public void destroy(){ System.out.println("被銷(xiāo)毀了"); } public User() { System.out.println("執(zhí)行了無(wú)參構(gòu)造"); } public void setId(Integer id) { System.out.println("set-id"); this.id = id; } //get和set方法 }
application-config.xml配置文件
<bean id="user" class="com.cos.qf.entity.User" autowire="byType" init-method="init" destroy-method="destroy"> </bean>
測(cè)試方法:不能用ClassPathXmlApplicationContext的父類(lèi)(ApplicationContext)去關(guān)閉不然就報(bào)錯(cuò)
@Test public void text4() { ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("application-config.xml"); ctx.close(); }
結(jié)果:
到此這篇關(guān)于詳解Spring工廠(chǎng)特性的文章就介紹到這了,更多相關(guān)Spring工廠(chǎng)特性?xún)?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Spring事物的傳播特性詳解
- Spring Boot 2.4新特性減少95%內(nèi)存占用問(wèn)題
- Spring Boot 2.4 新特性之一鍵構(gòu)建Docker鏡像的過(guò)程詳解
- spring5新特性全面介紹
- SpringBoot新特性之全局懶加載機(jī)制
- 全面解析Spring Security 過(guò)濾器鏈的機(jī)制和特性
- SpringBoot2.3新特性?xún)?yōu)雅停機(jī)詳解
- Spring MVC接受表單自動(dòng)封裝特性實(shí)例解析
- SpringBoot2.0新特性之配置綁定全解析
- Spring各版本新特性的介紹
- Intellij IDEA 2017新特性之Spring Boot相關(guān)特征介紹
- 簡(jiǎn)單了解Spring Framework5.0新特性
- spring4新特性之web開(kāi)發(fā)增強(qiáng)
- 淺析Spring4新特性概述
- Spring 4 支持的 Java 8 特性
- java Spring 5 新特性函數(shù)式Web框架詳細(xì)介紹
相關(guān)文章
Java中String.format的使用方法總結(jié)
這篇文章主要介紹了Java中String.format的用法總結(jié)的相關(guān)資料,需要的朋友可以參考下2017-03-03Mybatis分頁(yè)P(yáng)ageHelper插件代碼實(shí)例
這篇文章主要介紹了Mybatis分頁(yè)P(yáng)ageHelper插件代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-12-12Maven配置倉(cāng)庫(kù)、阿里云鏡像、環(huán)境變量(史上最全)
本文主要介紹了Maven配置倉(cāng)庫(kù)、阿里云鏡像、環(huán)境變量,文中通過(guò)圖文示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-07-07Spring+Http請(qǐng)求+HttpClient實(shí)現(xiàn)傳參
這篇文章主要介紹了Spring+Http請(qǐng)求+HttpClient實(shí)現(xiàn)傳參,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03Idea工具中創(chuàng)建 SpringBoot工程及入門(mén)詳解
這篇文章主要介紹了Idea工具中創(chuàng)建 SpringBoot工程及入門(mén)分析詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02Java網(wǎng)絡(luò)通信中URL與HTTP編程技術(shù)詳解
要想實(shí)現(xiàn)網(wǎng)絡(luò)編程,除了可以使用Socket之外,我們還可以利用URL編程或HTTP編程技術(shù),所以今天這篇文章,就給大家介紹一下URL編程和HTTP編程技術(shù),看看這兩種技術(shù)有什么特點(diǎn),文中有詳細(xì)的代碼講解,需要的朋友可以參考下2023-11-11