spring基於註解的IOC和DI配置

2021-10-07 12:46:49 字數 4629 閱讀 8653

註解

說明@component

使用在類上用於例項化bean

@controller

使用在web層類上用於例項化bean

@service

使用在service層類上用於例項化bean

@repository

使用在dao層類上用於例項化bean

@autowired

使用在字段上用於根據型別依賴注入

@qualifier

結合@autowired一起使用用於根據名稱進行依賴注入

@resource

相當於@autowired+@qualifier,按照名稱進行注入

@value

注入普通屬性

@scope

標註bean的作用範圍

@postconstruct

使用在方法上標註該方法是bean的初始化方法

@predestroy

使用在方法上標註該方法是bean的銷毀方法

這些註解我們可以按照功能 , 大致分為以下四類 :

用於建立物件:作用和xml配置中的標籤的作用是一樣的

用於注入資料:作用和xml配置中的標籤中的標籤作用一樣

用於改變作用範圍:作用和xml配置中的標籤的scope屬性的作用一樣

生命週期相關:作用和xml配置中的標籤的init-method和destroy-method屬性的作用是一樣的

注意: value:指定bean的id。如果不指定value屬性,預設bean的id是當前類的類名。首字母小寫。

<

context:component-scan

base-package

="包路徑"

>

context:component-scan

>

@configuration

作用:

屬性: value:用於指定配置類的位元組碼

@componentscan註解

作用:

用於指定spring在初始化容器時要掃瞄的包。作用和在spring的xml配置檔案中的: 是一樣的。

屬性: basepackages:用於指定要掃瞄的包。和該註解中的value屬性作用一樣。

@bean註解

@bean:用於把當前方法的返回值作為bean物件存入spring的ioc容器中,他的name屬性用於指定bean的id。當不寫時,預設值是當前方法的名稱

@import註解

@import用於匯入其他的配置類
@propertysource註解

作用:

@propertysource用於載入.properties檔案中的配置。例如我們配置資料來源時,可以把連線資料庫的資訊寫到properties配置檔案中,就可以使用此註解指定properties配置檔案的位置。

屬性: value:用於指定properties檔案位置。如果是在類路徑下,需要寫上classpath

建立jdbc.properties檔案

jdbc.driver=com.mysql.jdbc.driver

jdbc.url=jdbc:mysql://localhost:3306/spring_02

jdbc.username=

jdbc.password=

使用@propertysource指定配置檔案類中讀取配置檔案

@configuration

@componentscan

("com.boke"

)@propertysource

("classpath:db.properties"

)public

class

beanfactory")

private string driver ;

@value

("$"

)private string url ;

@value

("$"

)private string username ;

@value

("$"

)private string password ;

@bean

(name=

"queryrunner"

)public queryrunner getqueryrunner

(datasource datasource)

@bean

(name=

"datasource"

)public datasource getdatasource()

throws propertyvetoexception

}

@qualifier註解

作用:

用來在形參中為引數取別名

屬性: value:引數的別名

建立配置檔案db.properties

jdbc.driver=com.mysql.jdbc.driver

jdbc.url=jdbc:mysql://localhost:3306/spring_02

jdbc.username=root

jdbc.password=zl

建立配置類springconfig

@configuration

@componentscan

("com.boke"

)@propertysource

("classpath:db.properties"

)public

class

springconfig")

private string driver ;

@value

("$"

)private string url ;

@value

("$"

)private string username ;

@value

("$"

)private string password ;

@bean

(name=

"queryrunner"

)public queryrunner getqueryrunner

(@qualifier

("ds"

) datasource datasource)

@bean

(name=

"ds"

)public datasource getdatasource()

throws propertyvetoexception

}

修改測試類獲取spring容器操作1.匯入spring與junit整合的依賴包

>

>

org.springframeworkgroupid

>

>

spring-testartifactid

>

>

5.0.2.releaseversion

>

dependency

>

2.在單元測試類上新增註解

@runwith

(springjunit4classrunner.

class

)@contextconfiguration

(classes = springconfig.

class

)public

class

userservicetest

}注意:

1. 如果使用註解配置,

@contextconfiguration 應該指定配置類的位元組碼

@contextconfiguration

(classes = springconfig.

class

)2. 如果使用配置檔案,

@contextconfiguration`應該指定配置檔案的位置

@contextconfiguration

(locations =

"classpath:beans.xml"

)

註解配置, @contextconfiguration 應該指定配置類的位元組碼

@contextconfiguration(classes = springconfig.class)

如果使用配置檔案,@contextconfiguration`應該指定配置檔案的位置

@contextconfiguration(locations = 「classpath:beans.xml」)

spring基於註解的IOC

曾經的xml配置 bean id accountservice class com.itheima.service.impl.accountserviceimpl scope init method destroy method property name value ref property be...

spring基於註解的Ioc配置

賬戶的業務層實現類 曾經xml的配置 scope init method destory method 用於建立物件的 他們的作用就和在xml配置檔案中編寫乙個標籤實現的功能是一樣的 component 作用 用於把當前類物件存入spring容器中 屬性 value 用於指定bean的id。當我們不...

Spring基於註解的IOC配置

他們的作用就和在xml配置檔案中編寫乙個標籤實現的功能是一樣的 component 用於把當前類物件存入spring類容器中 屬性 value 用於指定bean的id,當我們不寫它的預設值是當前類名且首字母改小寫 controller 一般用在表現層 service 一般用在業務層 reposito...