1.1 bean基本語法
id: bean的唯一標識,類似於身份證號
name: bean的名字,類似於人名,可以有重複的名字。
當出現id和name相同時,ioc容器會自動消除重複。
為什麼id和name同時存在?都是標識,只使用乙個呢??
—使用id的好處就是可以很方便的使用xml的id屬性提前得知bean是否存在以及是否重名。
—那直接使用id就好了,為什麼還要使用name屬性呢?
alias:別名
import:引入其他bean
singleton 與 non-singleton:
預設的bean是singleton的模式,即只有乙個共享的例項存在,即對所有該bean請求返回這個唯一的例項。
如果為non-singleton,每次對bean的請求都會建立乙個新的bean例項。即 new 操作。
depends-on
depends-on屬性用來指定初始化該bean之前,先初始化依賴的bean。在銷毀該bean之前先銷毀依賴的bean。
1.2 ioc如何例項化bean
傳統的應用程式例項化bean時利用 new 或 反射機制來實現。
ioc容器則利用bean中宣告的類名通過反射機制來進行例項化。
大多數框架會使用反射。
ioc實現三種例項化bean的方式:
通過構造器例項化bean
create a class include default constructor and other constrctor
package com.myspring.helloworld;
public
class
helloconstrustor
implements
helloapi
public
helloconstrustor(string message)
@override
public
void
sayhelo()
}
create xml
<?xml version="1.0" encoding="utf-8"?>
xmlns=""
xmlns:xsi=""
xmlns:context=""
xsi:schemalocation=" /spring-beans-3.0.xsd /spring-context-3.0.xsd">
name="default_constructor"
class="com.myspring.helloworld.helloconstrustor">
bean>
name="argu_constructor"
class="com.myspring.helloworld.helloconstrustor">
index="0"
value = "hello
argu
construstor"/>
bean>
beans>
create test class
//面向介面程式設計
helloapi helloapi = factory.getbean("default_constructor", helloapi.class);
helloapi.sayhelo();
helloapi helloapi1 = factory.getbean("argu_constructor", helloapi.class);
helloapi1.sayhelo();`
通過靜態工廠的方式例項化bean
create static factory
package com.myspring.helloworld;
public
class
hellostaticfactory
}
create xml
<?xml version="1.0" encoding="utf-8"?>
xmlns=""
xmlns:xsi=""
xmlns:context=""
xsi:schemalocation=" /spring-beans-3.0.xsd /spring-context-3.0.xsd">
id="static_factory"
class="com.myspring.helloworld.hellostaticfactory"
factory-method="newinstance">
index="0"
value = "hello
static
factory
construstor"/>
bean>
beans>
create test class
//面向介面程式設計
helloapi helloapi = factory.getbean("static_factory", helloapi.class);
helloapi.sayhelo();
通過例項工廠的方式例項化bean
create instance factory class
package com.myspring.helloworld;
public
class
helloinstancefactory
}
create xml
<?xml version="1.0" encoding="utf-8"?>
xmlns=""
xmlns:xsi=""
xmlns:context=""
xsi:schemalocation=" /spring-beans-3.0.xsd /spring-context-3.0.xsd">
-->
id="beaninstancefactory"
class="com.myspring.helloworld.helloinstancefactory"/>
bean>
-->
id="instance_factory"
factory-bean="beaninstancefactory"
factory-method="newinstance">
index="0"
value="hello instance factory!">
constructor-arg>
bean>
beans>
create test class
//面向介面程式設計
helloapi helloapi = factory.getbean("instance_factory", helloapi.class);
helloapi.sayhelo();
spring 基本Bean裝配
在基於spring的應用中,應用元件在spring中是啟用的。容器可以建立元件,裝配和配置元件,以及管理它們的整個生 命週期。容器是spring 框架的核心,spring容器使用di管理所有組成應用系統的元件。spring容器提供多個spring 容器。spring容器提供了多種容器,並分為兩類。b...
go基本語法 golang基本語法
匯入包 import fmt import fmt os 函式外申明變數 var a int 函式內申明變數 a slice申明 slice本質是指向陣列的指標 var s int var s int make int,3 s make int,3 基於陣列建立slice a 3 int s a 3...
語法 C 基本語法
標頭檔案 在程式設計競賽中,我們常見乙個標頭檔案 include 發現它是部分c 中支援的乙個幾乎萬能的標頭檔案,包含所有的可用到的c 庫函式,如 在程式設計競賽中,使用這個標頭檔案是乙個好的想法,特別是當你在選擇標頭檔案時想減少時間,我們更加專注於找到演算法解決問題而不是軟體工程。而從軟體工程的視...