天天看點

spring中注解配置Ioc中常用注解

使用注解注入Ioc容器時(使用時要導入aop.jar包),xml檔案中需要配置告 訴其要掃描的包

<context:component-scan base-package=“包名”>之後這個将會掃描這個包下及其子 包中類和接口上的注解

@Component注解将其下方的類通過反射注入Ioc容器

屬性:value指的是這個類的反射的唯一Id當不使用時是以類名且首字小寫

當@component注解中隻有一個值時可以不寫value直接寫Id名字多個時就要指 定寫出

@Controller:一般用在表現層

@Service:一般用在業務層

@Repository:一般用在持久層

以上三個注解和@Component注解效果一樣是spring架構為我們提供的删除使用的使我們的三層更加清晰

@Autowired注解隻要容器中有唯一一個bean對象才會注入(注入之前Ioc容器中這個相比對的value并且Ioc中的bean時預設單例的)之後set方法就不是必須的可以删去

出現位置:變量上 方法上

@Autowired

@Qualifier(“accountDao”)

private IAccountDao accountDao = null;

通路修飾符 資料類型 變量名 資料類型

這個注解根據所修飾的變量的資料類型進行自動注入,在自動注入之前會檢查之前注入Spring的Ioc容器(Map結構)中key所對應的類及其這個類的接口是否含有于資料類型相同的的類和接口有點花将自動注入,如果沒有相比對的将報錯,當有多個比對時将會使用變量名當做唯一的Key查找後注入

@Qualifier注解

作用:在按照類中注入的基礎上再按照名稱注入它在給類成員注入時不能單獨使用但在給方法注入時可以單獨使用(與類成員注入時應該和@Autowired配合使用)

@Resource注解

作用:直接按照bean的Id注入可以獨立使用

屬性:name用于指定bean的id

@Autowired @Resource @Qualifier這三個注解隻能注入其他bean類型數 據不能實作基本類型和String類型的注入,集合類型的注入隻能通過XML配置實作

@Value

作用:用于指定資料的值,可以使用spring的SpEL(也就是spring的el表達式寫法${表達式})

spring中注解配置Ioc中常用注解

@Scope

作用:指定bean(一個bean就相當于一個對象)的作用範圍多使用在類上

spring中的類對象預設時單例(每個類對象位址相同)的

屬性:

value:指定範圍的取值常用取值singleton(單例) prototype(多例)

@PreDestroy

作用:用于指定銷毀方法和bean中的destroy-method方法一樣

@PostConstruct

作用:指定初始化方法和bean中的init-method方法一樣

多例情況下的銷毀spring不負責

@Configuration注解

作用:指定一個類為配置類作用和bean.xml一樣

配合使用的注解為@ComponentScan

作用:指定掃描的包和<context:component-scan base-package=“包名”>效果一樣

屬性:value和basePackages={“包名(類路徑或者包名這是一個數組形式可以填寫多個包名)”}

細節:當使用這個注解類時當在這個類中定義含參數的方法時spring架構将會自動在Ioc容器找查找與其參數名稱相同的唯一的id當存在多個相同的id時可以選擇修改參數名稱

使用對應的id也可以在這個參數的資料類型前面添加@Qulifier(“你想使用的id名稱”)注解表示當沒有找到時将使用這個注解中的id方式和@Autowired一樣

spring架構中的bean配置的對象預設時單例

@import(“類名.class”)

value:作用是用于指定其他類的位元組碼

作用:用于導入其他的配置類

位置:放于@Configuration注解下面相當于導入子配置類當掃描時Configuration注解(被稱為主配置類)時将會自動導入并且可以使用掃描import中類所在的包

@PropertySource(“classpath:propertise檔案路徑”)

作用:指定propert檔案的位置

value:指定檔案名稱和路徑

classpath:表示類路徑下

@Bean

作用:将方法的傳回值注入Ioc容器

屬性:name 用于指定唯一的id不寫時使用目前方法名作為id值

@Primary:用在類上,表示優先使用這個類的bean

@RunWith

作用:實作junit和spring的整合實作 ApplicationContext使用@Autowired自動注入(思路是重寫Junit的mian方法)

/**

* spring整合junit配置

* 1,導入依賴spring-test

* 2,使用@RunWith注解将main方法替換成spring提供的main

* 3.告知spring運作器,spring和Ioc建立是基于注解還是xml并且說明位置

* @ContextConfiguration

* locations:指定xml檔案的位置加上classpath關鍵字,表示在類路下

*

spring中注解配置Ioc中常用注解

* class:指定注解注入時@Configuration所修飾的類的位置

@ContextConfiguration(classes = springconfing.class)