開發基於註解的Spring

2021-10-05 05:32:06 字數 4646 閱讀 4212

bean的作用域(單例模式和非單例模式)

條件註解

springioc容器有兩種形式:

1、

存bean: 取bean:

context.getbean();

2、註解:帶有@configuration註解的類(配置類)

存bean

***在下面單獨說明***

取bean

1.必須有@configuration註解(配置類)

2.形式:

①三層元件加入ioc容器: 給個各類加	註解 、 掃瞄器識別註解所在包

a.給三層元件 分別加註解(@controller、@service、@repository -> @component)

b.將註解所在包 納入ioc掃瞄器(componentscan)

納入ioc掃瞄器:

①xml配置檔案 :

②註解掃瞄器:

@componentscan(value ="org.cduck")

邏輯: 在三層類上加註解 ,讓ioc識別,掃瞄器

component-scan:只對三層元件負責

②非三層元件(student.class 、inttostringconver.class):

i. @bean+方法的返回值 ,id預設就是方法名(可以通過@bean("stu") 修改id值)

ii. import 、factorybean

給掃瞄器指定規則過濾型別:filtertype(annotation,assignable_type,custom)

annotation:三層註解型別@controller、@service、@repository -> @component

excludefilters:排除

排除org.cduck包下的service層和dao層只掃瞄其他層

@componentscan

(value =

"org.cduck"

,excludefilters =)}

)

includefilters:有預設行為,可以通過usedefaultfilters = false禁止annotation:

只掃瞄org.cduck包下的service和dao層

@componentscan

(value =

"org.cduck"

,includefilters =)}

,usedefaultfilters =

false

)

assignable_type:

只掃瞄org.cduck包下的studentcontroller類

@componentscan

(value =

"org.cduck"

,includefilters =)}

,usedefaultfilters =

false

)

區分:

annotation:controller.clss 指的是 所有標有@controller的類

assignable_type:值得是具體的乙個類 studentcontroller.class

custom自定義:自己定義包含規則

@componentscan.filter(type= filtertype.custom ,value=

myfilter implements typefilter 重寫其中的match,如果return true則加入ioc容器

①直接編寫到@import中,並且id值 是全類名

②自定義importselector介面的實現類,通過selectimports方法實現(方法的返回值 就是要納入ioc容器的bean) 。 並且 告知程式 自己編寫的實現類。 @import()

③編寫importbeandefinitionregistrar介面的實現類,重寫方法

1.準備bean。實現類和重寫方法

package org.cduck.config;

import org.springframework.beans.factory.factorybean;

public

class

myfactorybean

implements

factorybean

@override

public class<

?>

getobjecttype()

@override

public

boolean

issingleton()

}2.註冊bean。註冊到@bean中

注意要在myconfig中寫以下**

@bean

myfactorybean()

3.測試

public

static

void

testannotation()

----

----

----

----

----

----

----

----

----

----

----

----

----

----

-結果:org.cduck.config.myfactorybean@394df057

scope: singleton | prototype

執行時機(產生bean的時機):

singleton:容器在初始化時,就會建立物件(唯一的乙個);以後再getbean時,不再產生新的bean。singleton也支援延遲載入(懶載入):在第一次使用時產生。 @lazy

prototype:容器在初始化時,不建立物件;只是在每次使用時(每次從容器獲取物件時 ,context.getbean(***x)),再建立物件;並且  每次getbean()都會建立乙個新的物件。
可以讓某乙個bean 在某些條件下 加入ioc容器,其他情況下不加ioc容器。

a.準備 bean

b.增加條件bean:給每個bean設定條件 ,必須實現condition介面

}

c.根據條件,加入ioc容器

在sts中設定jvm啟動引數,car.type。

d.測試

基於註解的spring

spring ioc容器的2種形式 儲存bean的形式 獲取bean的形式 建立ioc容器物件 從ioc容器中獲取bean例項 student student student context.getbean student 儲存bean的形式 就是在方法名前加 bean註解,bean的id就是方法名...

spring 基於註解的spring配置

spring是乙個基於ioc和aop的結構j2ee系統的框架 ioc 反轉控制 是spring的基礎,inversion of control 簡單說就是建立物件由以前的程式設計師自己new 構造方法來呼叫,變成了交由spring建立物件 di 依賴注入 dependency inject.簡單地說...

spring之基於註解的AOP開發08

可以在bean.xml中配置也可以使用註解開啟spring對aop註解的支援 bean.xml logger package cn.itcast.utils import org.aspectj.lang.proceedingjoinpoint import org.aspectj.lang.ann...