Bean 基本語法

2021-07-29 15:15:37 字數 3542 閱讀 2675

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 庫函式,如 在程式設計競賽中,使用這個標頭檔案是乙個好的想法,特別是當你在選擇標頭檔案時想減少時間,我們更加專注於找到演算法解決問題而不是軟體工程。而從軟體工程的視...