1. 程式人生 > >spring詳解:通過FactoryBean自定義工廠初始化Bean

spring詳解:通過FactoryBean自定義工廠初始化Bean

FactoryBean的作用:

FactoryBean是一個介面,擴充套件功能提供給使用者自定義工廠方法和工廠物件用於例項化物件。

FactoryBean定義了3個方法介面:

T getObject():自定義的工廠方法;

booleanisSingleton():定義Bean是不是單例的,如果true則是singleton,false的話就是prototype;

Class<T>getObjectType():一般返回例項化物件的類物件。

例項如下:

自定義工廠: 

package com.baobaotao.fb;

import org.springframework.beans.factory.FactoryBean;

public class CarFactoryBean implements FactoryBean<Car>
{
    //用作初始化引數的字串
	private String carInfo;
	
	public String getCarInfo() 
	{
		return carInfo;
	}

	public void setCarInfo(String carInfo) 
	{
		this.carInfo = carInfo;
	}

	//1 實現getObject方法 這裡的類似一個工廠方法 
	//使用carInfo字串例項化並返回物件
	public Car getObject() throws Exception 
	{
		Car car = new Car();
		String[] infos = carInfo.split(",");
		car.setBrand(infos[0]);
		car.setMaxSpeed(Integer.parseInt(infos[1]));
		car.setPrice(Double.parseDouble(infos[2]));
		return car;
	}

	//2 getObjectType方法 返回物件的class物件
	public Class<Car> getObjectType() 
	{
		return Car.class;
	}

	//3 定義Bean是否是單例的
	public boolean isSingleton() 
	{
		return false;
	}
}

使用自定義工廠初始化Bean的配置檔案: 

    <!-- 這裡的car1實際上就是用CarFactoryBean工廠建立的, p:carInfo為工廠的字串引數-->
    <bean id="car1" class="com.baobaotao.fb.CarFactoryBean"
	    p:carInfo="紅旗CA72,200,20000.00"/>

參考         

Spring3.x企業應用開發實戰

相關推薦

spring通過FactoryBean定義工廠初始Bean

FactoryBean的作用: FactoryBean是一個介面,擴充套件功能提供給使用者自定義工廠方法和工廠物件用於例項化物件。 FactoryBean定義了3個方法介面: T getObject():自定義的工廠方法; booleanisSingleton():定義B

今晚8點直播 | 基於百度定義模板的OCR結果結構處理技術

隨著行業的發展和技術的成熟,文字識別(OCR)目前已經應用到了多個行業中,比如物流行業快遞包裹的分揀,金融行業的支票單據識別輸入,交通領域中的車牌識別,以及日常生活中的卡證、票據識別等等。OCR(文字識別)技術是目前常用的一種AI能力。但一般OCR的識別結果是一種按行輸出的半結構化輸出。

Juniper SSG5(bgroupx介面及刪除bgroupx定義

從console口登陸檢視介面,標紅部分預設從eth0/2-6都屬於Trust介面 ssg5-serial-> get interface A - Active, I - Inactive, U -Up, D - Down, R - Ready Interfa

Spring Boot(四)利用註解定義日期格式化

在日期的格式化過程中,我們有時候需要將日期格式化到秒或者微妙,有時候又僅僅需要將日期格式化到日期,所以定義全域性的日期格式化肯定難以滿足需求,這時就需要一種更靈活的方法。 在Spring Boot對JSON的處理類中,定義了annotationIntrospe

SpringWebServlet 中不能注入Bean物件

1. 前言 最近在研究Spring IOC、AOP以及和Mybatis整合的時候發現在Spring中使用Servlet+Service+Dao(Mybatis)的時候,發現在Controller層也就是Servlet中不能通過@Autowired注入Bean物件。這個時候我就納悶了,在S

spark sql使用者定義函式:UDF與UDAF

場景 UDAF = USER DEFINED AGGREGATION FUNCTION11 上一篇文章已經介紹了spark sql的視窗函式,並知道Spark sql提供了豐富的內建函式供猿友們使用,辣為何還要使用者自定義函式呢?實際的業務場景可能很複雜,內建函式hold

RecyclerView+BGARefreshLayout實現定義下拉重新整理、上拉載入和側滑刪除效果

前言 還有2個月就過年了,對於我們這樣在外漂泊的異鄉人來說,一家人團聚在一起,吃一頓團圓飯,那是再幸福不過的事了。我們之所以遠離家鄉來到異鄉就像異鄉人這首歌寫的一樣,只為一扇窗! 正文 上篇文章給大家講解了一下關於RecyclerView的使用,今天給

android 開發 View _14 MotionEvent和事件處理,與實踐定義滑動條View

MotionEvent MotionEvent物件是與使用者觸控相關的時間序列,該序列從使用者首次觸控式螢幕幕開始,經歷手指在螢幕表面的任何移動,直到手指離開螢幕時結束。手指的初次觸控(ACTION_DOWN操作),滑動(ACTION_MOVE操作)和擡起(ACTION

Android事件傳遞機制(巢狀定義View示例)

一、概述   自定義View如果嵌套了自定義View,可能簡單寫一個onTouchEvent處理事件已經不能解決你的需要。簡單舉個例子: 你自定義了一個容器View,簡稱為父View,在這裡監聽點選事件,做事情A,監聽滑動做事情B 然後你又自定了一個View,放入該容器

終極元件框架專案方案一個極具參考的元件專案

熱文導讀 | 點選標題閱讀作者:啊哈啊哈哈https://juejin.im/user/57a2

通過Xib定義UIViewController例項時報錯的解決

自定義一個UIViewController,名為FooViewController 因為希望各個VC獨立分開,所以沒有將自定義控制器的UI放到storyboard裡,而是單獨做了一個xib檔案。 注意Xcode自定義繼承自UIViewController的類

30分鐘學會EventBus3.0詳解(一)(引入和初始化EventBus3.0) 30分鐘學會EventBus3.0詳解(二)(EventBus3.0的詳細使用) 30分鐘學會EventBus3.0詳解(一)(引入和初始化EventBus3.0) 30分鐘學會EventBus3.0詳解(二)(Ev

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

C++11(一)在類的定義初始非靜態變數

前言 距離C++11標準釋出時間大約有六年了,但是C++11的諸多特性並未在程式界達到普及的狀態,甚至在一些“老程式設計師”看來,由於他們不了C++11標準新加入的內容,一些正常的程式常常被當做BUG處理,接下來我們就看看C++11加了那些特性,今天我們來測試

【python】類class的繼承、__init__初始、super方法(五)

通過之前四篇的介紹: 【python】python中的類,物件,方法,屬性初認識(一)詳見連結 【python】詳解類class的屬性:類資料屬性、例項資料屬性、特殊的類屬性、屬性隱藏(二)詳見連結 【python】詳解類class的方法:例項方法、類方法、

【一起學原始碼-微服務】Ribbon 原始碼二通過Debug找出Ribbon初始流程及ILoadBalancer原理分析

前言 前情回顧 上一講講了Ribbon的基礎知識,通過一個簡單的demo看了下Ribbon的負載均衡,我們在RestTemplate上加了@LoadBalanced註解後,就能夠自動的負載均衡了。 本講目錄 這一講主要是繼續深入RibbonLoadBalancerClient和Ribbon+Eureka整合的

JVM之:類的載入連結和初始

[toc] # 簡介 有了java class檔案之後,為了讓class檔案轉換成為JVM可以真正執行的結構,需要經歷載入,連結和初始化的過程。 這三個過程是怎麼工作的呢?在本文中你將會找到答案。 # 載入 JVM可以分為三大部分,五大空間和三大引擎,要講起來也不是特別複雜,先看下面的總體的JVM架

Spring Boot 配置檔案定義屬性、隨機數、多環境配置等

相信很多人選擇Spring Boot主要是考慮到它既能兼顧Spring的強大功能,還能實現快速開發的便捷。我們在Spring Boot使用過程中,最直觀的感受就是沒有了原來自己整合Spring應用時繁多的XML配置內容,替代它的是在pom.xml中引入模組化的Starter POMs,其中各個模組都有自己的預

spark三種清理資料的方式UDF,定義函式,spark.sql;Python中的zip()與*zip()函式//及python中的*args和**kwargs

(1)UDF的方式清理資料 import sys reload(sys) sys.setdefaultencoding('utf8') import re import json from pyspark.sql import SparkSession

MySQL基礎篇(03)系統和定義函式總結,觸發器使用

本文原始碼:GitHub·點這裡 || GitEE·點這裡 一、系統封裝函式 MySQL 有很多內建的函式,可以快速解決開發中的一些業務需求,大概包括流程控制函式,數值型函式、字串型函式、日期時間函式、聚合函式等。以下列出了這些分類中常用的函式。 1、控制流程函式 case...when 根據值判斷返

Spring Boot 配置文件Properties和YAML

列表 config 其他 操作系統 des num mat 變量 onf 一.配置文件的生效順序,會對值進行覆蓋: 1. @TestPropertySource 註解 2. 命令行參數 3. Java系統屬性(System.getProperties