Spring註解驅動(二)

2021-10-22 01:32:42 字數 2335 閱讀 8674

@conditional按照一定的條件進行判斷,滿足條件給容器中註冊bean

@conditional()

@conditional()

@bean

("bill"

)public person person1()

@conditional()

@bean

("linux"

)public person person2()

-dos.name=linux 在idea vm options 配置

定義乙個類實現condition介面,然後重寫裡面的matches方法,用來定義–確定條件是否匹配

/**

* @param context 判斷條件能使用的上下文(環境)

* @param metadata 注釋資訊

* @return 返回true則確認載入,返回false則不符合條件不載入

*/@override

public

boolean

matches

(conditioncontext context, annotatedtypemetadata metadata)

return

false

;}

給容器中註冊元件:

包掃瞄+元件標註註解(@controller、@service、@repository、@component)

@bean[匯入的第三方包裡面的元件]

@import[快速給容器中匯入乙個元件]

@import(要匯入到容器中的元件):容器中就會自動註冊這個元件,id預設是全類名

// @import 匯入元件,id預設是元件的全類名

@import

()

importselector:返回需要匯入的元件的全類名陣列

定義乙個類實現importselector介面(相當於是自定義邏輯需要匯入的元件)

// 返回值,就是到匯入到容器中的元件全類名

// annotationmetadata : 當前標註@import註解的類的所有註解資訊

@override

public string[

]selectimports

(annotationmetadata importingclassmetadata)

;}

importbeandefinitionregistrar:手動註冊bean到容器中

定義乙個類實現importbeandefinitionregistrar

/** 如果容器中註冊的有color和red,則新建乙個aoligei的bean

* * @param importingclassmetadata 當前類的註解資訊

* @param registry beandefinitionregistry 所有bean的註冊類,所有bean都在這註冊

*/@override

public

void

registerbeandefinitions

(annotationmetadata importingclassmetadata, beandefinitionregistry registry)

}

使用spring提供的factorybean(工廠bean)

預設獲取到的是工廠bean呼叫getobject建立的物件

要獲取工廠bean本身,我們需要給id前面加乙個& (&colo***ctorybean)

定義乙個類colo***ctorybean實現factorybean,並將這個類註冊在配置類中

public

class

colo***ctorybean

implements

factorybean

// 物件型別

@override

public class<

?>

getobjecttype()

// 是否是單例

@override

public

boolean

issingleton()

}

spring註解驅動(二)

import 給容器中註冊元件的方式 包掃瞄 註解標註註解 controller service repository component 侷限於自己寫的類 bean 匯入第三方包裡面的元件 import 快速給容器匯入乙個元件 import 要匯入到容器的元件 容器中就會自動註冊這個元件,id預設...

spring 註解驅動 01

註解有 controller 標註是乙個控制層 service 標註是乙個業務層 repository 標註是乙個持久層 configuration 表示是乙個配置類 componentscan 表示掃瞄包與spring bean.xml檔案中的掃瞄包效果一致 下面看是示例 一 這是乙個配置類 pa...

spring註解驅動 Autowired

1.autowired 自動注入 1.預設優先按照型別去容器中找對應的元件,如果找到多個,則按照屬性名作為元件 的 id 去容器中查詢 2.qualifier 使用 qualifier指定需要裝配的元件id,而不是屬性名 自動裝配預設一定要將屬性賦值好,沒有就報錯。可以使用 autowired re...