spring bean創建細節


1) 對象創建:

單例/多例
? ??scope="singleton", 默認值,即默認是單例【service/dao/工具類】
? ?scope="prototype", 多例;【Action對象】

2) 什么時候創建?

? scope="prototype" ?在用到對象的時候,才創建對象。
? scope="singleton" ?在啟動(容器初始化之前), 就已經創建了bean,且整個應用只有一個。

3)是否延遲創建

?lazy-init="false" ?默認為false, ?不延遲創建,即在啟動時候就創建對象
?lazy-init="true" ? 延遲初始化, 在用到對象的時候才創建對象
? (lazy-init只對單例有效)? ? ? ?

4) 創建對象之后,初始化/銷毀

?init-method="init_user" ?【對應對象的init_user方法,在對象創建之后執行 】
? destroy-method="destroy_user" ?

【在調用容器對象的destriy方法時候執行,(容器用實現類),scope="singleton" 時有效】


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"><bean id="userId" class="b_bean.User" scope="singleton" lazy-init="false"init-method="init_user" destroy-method="destroy_user"></bean></beans>      


package b_bean;public class User {private int id;private String name;public User() {System.out.println("User對象創建....");}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public void init_user(){System.out.println("init_user.....");}public void destroy_user(){System.out.println("destroy_user.....");}}

package b_bean;import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class CreateBean {@Testpublic void test(){//ApplicationContext context=new ClassPathXmlApplicationContext("b_bean/applicationContext.xml");//為了測試destroy-method,接口沒有方法ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext("b_bean/applicationContext.xml");System.out.println("ApplicationContext容器對象創建....");User user1=(User) context.getBean("userId");User user2=(User) context.getBean("userId");System.out.println(user1);System.out.println(user2);context.destroy();}
}



本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/539585.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/539585.shtml
英文地址,請注明出處:http://en.pswp.cn/news/539585.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

發送郵件程序報錯454 Authentication failed以及POP3和SMTP簡介

一、發現問題 在測試郵件發送程序的時候&#xff0c;發送給自己的QQ郵箱&#xff0c;程序報錯454 Authentication failed, please open smtp flag first。 二、解決問題 進入QQ郵箱——>設置——>賬戶——>POP3/IMAP/SMTP選擇——>開啟POP3/SMTP服務。 三、POP3和S…

MySQL數據庫是非關系_MySQL(數據庫)基礎知識、關系型數據庫yu非關系型數據庫、連接認證...

什么是數據庫&#xff1f;數據庫(Database)&#xff1a;存儲數據的倉庫高效地存儲和處理數據的介質(介質主要是兩種&#xff1a;磁盤和內存)數據庫系統&#xff1a;DBS(Database System)&#xff1a;是一種虛擬系統&#xff0c;將多種內容關聯起來的稱呼DBS DBMS DBDBMS&…

WPF 使用MahApps.Metro UI庫

http://www.cnblogs.com/happyyftk/p/6904766.html 本文示例源碼下載&#xff1a;MetroWPF 官方示例地址&#xff1a;http://mahapps.com/guides/quick-start.html 官方控件示例地址&#xff1a;http://mahapps.com/controls/ MahApps.Metro 項目源碼&#xff1a;https://githu…

SpringIOC容器-創建對象

SpringIOC容器&#xff0c;是spring核心內容。功能&#xff1a;創建對象&#xff0c;處理對象的依賴關系 IOC容器創建對象&#xff1a; 創建對象, 有幾種方式&#xff1a; 1&#xff09; 調用無參數構造器 2&#xff09; 帶參數構造器 3&#xff09; 工廠創建對象 工廠類&…

java注釋搞笑圖案_搞笑的代碼注釋,那些有趣的程序員

發表于 2019-04-24 16:11:26 by 月小升搞笑/**** .::::.* .::::::::.* ::::::::::: F*CK YOU* ..:::::::::::* ::::::::::::* .::::::::::* ::::::::::::::..* ..::::::::::::.* ::::::::::::::::* ::::::::::::: .:::.* :::: ::::: .::::::::.* .:::: :::: .:::::::::::.* .::…

SpringIOC容器-對象依賴

1 概述 Spring中&#xff0c;如何給對象的屬性賦值? 【DI, 依賴注入】 1) 通過構造函數 2) 通過set方法給屬性注入值 3) p名稱空間 4) 自動裝配 5) 注解 1.1 通過構造函數 <!-- ###############對象屬性賦值############### --><!-- 1) 通過構造函數 --><be…

f5長連接策略

但是把這些短連接匯聚到一起&#xff0c;集中F5的設備上&#xff0c;通過F5與服務器建立平滑的長連接&#xff0c;就解決了不斷增大的并發連接。比如說前臺有15萬個并發連接&#xff0c;經過F5的優化&#xff0c;在服務器上只有不到5000個并發連接&#xff0c;而且在此過程中&a…

pdo-mysql_PHP: MySQL (PDO) - Manual

PDO::MYSQL_ATTR_USE_BUFFERED_QUERY(int)Если этот атрибут установлен в true вPDOStatement, MySQL-драйвербудет использовать буферизованные версии API MySQL.Если вы пишете пе…

Spring IOC容器【p名稱空間注入屬性值 】

# p 名稱空間給對象的屬性注入值(spring3.0以上版本才支持) 需要引入&#xff1a; xmlns:p"http://www.springframework.org/schema/p" 舉例 applicationContext.xml <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http…

Spring properties定義bean

2019獨角獸企業重金招聘Python工程師標準>>> Spring提供了豐富的標簽和注解來進行bean的定義&#xff0c;除此之外框架來提供了擴展機制讓使用可以通過properties來定義bean&#xff0c;與強大的標簽式和注解式的bean定義相比&#xff0c;properties提供的規則要簡單…

Spring IOC容器-自動裝配

1 autowire"byName" 根據名稱自動裝配&#xff0c;自動去IOC容器中找與屬性名同名的引用的對象&#xff0c;并自動注入。 <!-- ###############自動裝配############### --> <bean id"userDao" class"d_auto.UserDao"></bean&g…

linux下C++遍歷文件夾下的全部文件;Windows/Linux下C++批量修改文件名,批量刪除文件...

Linux下 C遍歷目錄下所有文件 1 rename(image_path.c_str(), image_path_new.c_str()); 2 remove(image_path_move.c_str()); 上述批量操作的代碼是在linux下的參數設置&#xff1a; rename的參數&#xff0c;image_path為原文件的路徑文件名&#xff0c;image_path_new為文件…

mongodb java 單例_Java單例MongoDB工具類

我經常對MongoDB進行一些基礎操作&#xff0c;將這些常用操作合并到一個工具類中&#xff0c;方便自己開發使用。沒用Spring Data、Morphia等框架是為了減少學習、維護成本&#xff0c;另外自己直接JDBC方式的話可以更靈活&#xff0c;為自己以后的積累留一個腳印。Java驅動版本…

Spring IOC容器-注解的方式

注解方式可以簡化spring的IOC容器的配置&#xff0c;但不利于后期維護&#xff0c;對象之間的依賴關系不能像xml文件一樣方便查閱&#xff0c;一目了然。 注解可以和XML配置一起使用。 使用注解步驟&#xff1a; 1&#xff09;先引入context名稱空間 xmlns:context"htt…

前端請求進化之路--從form表單到JSONP

簡單梳理前端請求的變遷史&#xff0c;著重對JSONP進行整理 請求演變 使用form表單提交請求&#xff0c;缺點是每次提交必定會刷新頁面在1基礎之上使用iframe進行局部刷新&#xff0c;用戶體驗得到一定優化動態創建圖片提交請求 注意請求與返回內容類型須一致每次必須返回圖片較…

Spring IOC容器-注解的方式【更簡化】

----更加簡化的版本 UserAction.java import javax.annotation.Resource;import org.springframework.stereotype.Component; import org.springframework.stereotype.Controller;//Component("userAction") // 加入IOC容器//ComponentController // 控制層的組件…

hive安裝mysql驅動_Hadoop-2.6.0為基礎的Hive安裝

Hive安裝軟件需求與環境說明假設已經搭建好 Hadoop-2.6.0 環境&#xff0c;并能正常運行mysql 安裝軟件服務端&#xff1a;MySQL-server-5.5.16-1.rhel5.x86_64.rpm客戶端&#xff1a;MySQL-client-5.5.16-1.rhel5.x86_64.rpmhive安裝軟件&#xff1a;apache-hive-1.2.1-bin.ta…

視頻通信原理——NAT介紹

一&#xff1a;為什么需要NAT由于IP地址隨著互聯網的發展而逐漸稀缺&#xff0c;難以使得每臺主機都擁有一個公網上的IP地址&#xff0c;且并不是所有主機都需要一個公網上的地址&#xff0c;于是就有了NAT技術。NAT&#xff08;The IP Network Address Translator&#xff09;…

Oracle中執行存儲過程call和exec區別

在sqlplus中這兩種方法都可以使用&#xff1a; exec pro_name(參數1..); call pro_name(參數1..); 區別&#xff1a; 1. 但是exec是sqlplus命令&#xff0c;只能在sqlplus中使用&#xff1b;call為SQL命令&#xff0c;沒有限制. 2. 存儲過程沒有參數時,exec可以直接跟過…

java和cnc_Java程序員的目標,你都達到了多少條?

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓7.你需要學習Servlets&#xff0c;JSP&#xff0c;以及JSTL(StandardTagLibraries)和可以選擇的第三方TagLibraries。8.你需要熟悉主流的網頁框架&#xff0c;例如JSF&#xff0c;Struts&#xff0c;Tapestry&#xff0c;Cocoon&am…