《Spring In Action》 讀書筆記(3) -- factory-method的應用
因為單例類的特殊性,spring對於單例類的注入提供了factory-method屬性,先上程式碼。
OneInstance類:
package spring.ioc02;
public class OneInstance {
public static class GetInstanceHolder{
static OneInstance oneInstance = new OneInstance();
}
public static OneInstance getInstance(){
return GetInstanceHolder.oneInstance;
}
public void finish(){
System.out.println("例項化完成");
}
}
OneInstance 類裡面有個內部類GetInstanceHolder,它有一個靜態屬性oneInstance ,為了獲取這單例屬性,OneInstance 類提供了一個靜態方法getInstance(),它會返回oneInstance。
但是這個類既沒有構造體,也沒有屬性,所以要spring託管的話需要用到factory-method方法。
看spring xml配置檔案
<?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:context="http://www.springframework.org/schema/context"
xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:util="http://www.springframework.org/schema/util" xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.0.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd"
default-lazy-init="true">
<description>Spring Configuration</description>
<bean id="oneInstance" class="spring.ioc02.OneInstance"
factory-method="getInstance"
></bean>
</beans>
spring初始化的時候會執行spring.ioc02.OneInstance裡的getInstance獲取例項,以完成bean的裝配。
再看一下單元測試:
/**
* ioc02
* <bean> 中使用factory-method屬性 完成沒建構函式情況下的例項化(單例)
*/
@Test
public void test3() {
ApplicationContext context = new ClassPathXmlApplicationContext("ioc02.xml");
OneInstance instance = (OneInstance) context.getBean("oneInstance");
instance.finish();
}
輸出結果是: 例項化完成
相關推薦
《Spring In Action》 讀書筆記(3) -- factory-method的應用
因為單例類的特殊性,spring對於單例類的注入提供了factory-method屬性,先上程式碼。 OneInstance類: package spring.ioc02; public class OneInstance { public
Spring In Action讀書筆記
implement efi 事務隔離 簡單 視圖 適合 組成 .html bool 第一章 1.Spring採用4種策略減少Java開發復雜度 基於POJO的輕量級和最小侵入性編程 依賴註入和面向接口實現松耦合 基於切面和慣例進行聲明式編程 通過切面和模板降低樣板式
tcp/ip 卷一 讀書筆記(3)為什麽既要有IP地址又要有MAC地址
維護 移動 理論 集線器 協議 合並 所有 變更 影響 網絡層 首先明確一點,並不是所有的網絡之間傳輸數據都需要mac地址和ip地址,比如說點對點線路之間的通信就沒有MAC地址,網絡層使用ipx協議時就沒有ip地址,但是在當前的主流網絡中,我們都使用ip地址和mac地址 既
程式碼大全 讀書筆記(3)軟體構建中的設計
1. 選擇程式語言 熟悉的語言 高階的語言 更能表達程式設計中各種概念的語言 每種語言都有自己的優點和弱點,要知道所選用語言的明確優點和弱點。 問問自己,採用的程式設計實踐是對你所用的程式語言的正確響應,還是受它的控制,記得“深入一種語言去程式設計”,不要僅“在一種語言上程式設計
spring in action 讀書筆記
一 spring使用的策略 1、基於pojo輕量級和最小侵入性程式設計 2、通過依賴注入和麵向介面實現鬆耦合 3、基於切面和慣例進行宣告式程式設計 4、通過切面和模板減少樣板式程式碼 二 依賴注入 -- xml -- 程式碼方式 三 應用切面 安全
kafka 權威指南--讀書筆記-(3)向kafka寫入資料
(1)kafka生產者設計和元件 (1)不同的應用場景對訊息有不同的需求,即是否允許訊息丟失、重複、延遲以及吞吐量的要求。不同場景對Kafka生產者的API使用和配置會有直接的影響。 例子1:信用卡事務處理系統,不允許訊息的重複和丟失,延遲最大500ms,對吞吐量要求較高
認識django2.0讀書筆記(3)---第三章 檢視和URL配置
文件下載地址:Django_2.0_中文教程 http://download.csdn.net/detail/julius_lee/6620099 線上地址:http://djangobook.py3k.cn/2.0/ Django 2.0 Book 關鍵內容記錄,主要
Object-C高階程式設計讀書筆記(3)——Block的變數擷取
之前我們對於Block的定義為 “帶有自動變數值的匿名函式”。通過前面的介紹,知道了Block能夠保持傳入其中的變數的值,即使在Block外部這些傳入的值已經結束了其作用域,但是在Block被呼叫時,
Spring Cloud Alibaba學習筆記(3) - Ribbon
1.手寫一個客戶端負載均衡器 在瞭解什麼是Ribbon之前,首先通過程式碼的方式手寫一個負載均衡器 RestTemplate restTemplate = new RestTemplate(); // 獲取請求示例 List<ServiceInstance> instances = dis
《JavaScript 模式》讀書筆記(3)— 字面量和建構函式1
新的篇章開始了,本章開始,所有的內容都是十分有價值和意義的。本章主要的內容包括物件字面量、建構函式、陣列字面量、正則字面量、基本值型別字面量以及JSON等。在大家的工作和實際應用中也有一定的指導意義。 一、物件字面量 我們直接來先看一下程式碼: // 開始時定義一個空物件 var do
spring學習筆記(3)——bean配置細節註意
collect 1.5 之前 ice ble person name return 引用 1. 一個bean引用另外一個bean 當Person類中有一個屬性是Car,那麽該如何配置呢 person: package com.zj.spring; public class
Spring入門學習筆記(3)——事件處理類
aware super 不能 href his 應用 odi eap app 目錄 Spring中的事件處理 Spring內建事件 監聽Context事件 Example 自定義Spring事件 Spring中的事件處理 ApplicationContext 是Spr
spring cloud學習筆記(3)-- ribbon和feign
1.ribbon客戶端負載均衡介紹及基本使用 負載均衡想必都是比較清除的,在伺服器端的負載均衡主要是通過Nginx實現: 那麼客戶端的負載均衡呢 Ribbon是一個實現了客戶端負載均衡的元件,Netflix開源的,其主要功能是提供客戶端側負載均衡 Ribbon客戶
Spring原始碼解析--《SPRING技術內幕:深入解析Spring架構與設計原理》讀書筆記(一):IOC容器初始化過程
通過閱讀相關章節內容,Spring中IOC容器的載入中,我們需要了解下列幾個概念: Resource:是一個定位、訪問資源的抽象介面,包含了多種資源操作的基礎方法定義,如getInputStream()、exists()、isOpen()、getD
論文筆記(3)--(Re-ID)In Defense of the Triplet Loss for Person Re-Identification
deep metric learning – 深度度量學習,也就是相似度學習 Classification Loss – 當目標很大時,會嚴重增加網路引數,而訓練結束後很多引數都會被摒棄。 Verification Loss – 只能成對的判斷兩張圖片的相似度,因此很難應用到目標聚類和檢索上
《演算法導論(第3版)》讀書筆記(一)演算法基礎
本篇內容主要涉及《演算法導論》一書中的第二章知識,涉及的內容有插入排序和歸併排序 插入排序 對於插入排序有個很明顯的顯示生活例子來幫助我們理解,插入排序的工作原理就像打撲克牌一樣,右手從桌面上拿起一張牌,然後再左手那一堆已經按牌面大小排好序的牌找
spring boot 學習筆記 (3) Spring Boot 對web的支援
JSON 的支援 JSON (JavaScript Object Notation) 是一種輕量級的資料交換格式,易於閱讀和編寫,同時也易於機器解析和生成。JSON 採用完全獨立於語言的文字格式,但是也使用了類似於 C 語言家族的習慣(包括 C、C++、C#、Java、JavaScript、Pe
Spring JDBC學習筆記(3):使用JdbcTemplate來獲取資料庫表和列的元資料
本篇文章才是我寫這一個系列文章的目的,原來我一般都是使用jdbc獲取資料庫的元資料,但是有點讓我很不爽,每次查資料表和列的時候都要自己寫“TABLE_NAME”和“COLUMN_HOME”等名稱,所以乾脆轉到JdbcTemplate實現上。通過JdbcTemplate獲取資
《Spring + Cloud微服務實戰》讀書筆記(二)————Spring Boot
1.Spring Boot簡介 1.1簡化配置 通過設計大量的自動化配置等方式來簡化Spring原有樣板化的配置,使得開發者可以快速構建應用。 1.2簡化依賴管理 Spring Boot 通過一系列Starter POMs的定義,讓我們整合各項功
java特種兵讀書筆記(3-5)——java程式設計師的OS之OOM
HeapSize OOM public static void main(String[] args) { List<String> list = Lists.newArrayList(); while (true) { list.add("hello");