Bean配置(註解)
使用註解定義bean
@Component
功能:指定對應的類為Spring控制的bean
格式:定義在類的上方,可以為類指定bean名稱 定義UserDAOImpl類為Spring控制的bean,未指定名稱
@Component public class UserDaoImpl implements USerDaoI{ }
定義UserDAOImpl類為Spring控制的bean,名稱”userDao”
@Component("userDao") public class UserDaoImpl implements USerDaoI{ }
bean的名稱可以定義多個,如@Component(“u1,u2,u3”)
Spring使用註解定義bean,IoC容器並不知道哪些 類被聲明了註解,因此需要類路徑下每一個類進行 掃描,並針對聲明了註解的類進行加載。Spring通 過XML聲明的格式,定義加入掃描的路徑(多配置)
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <context:component-scan base-package="com.wd"></context:component-scan> </beans>
@Component衍生註解
Spring2.5+還定義了3個@Component的衍生註解, 用於在後期版本中對其功能進行深層次的擴展
@Repository 用於對數據層實現類進行標註
@Service 用於對業務邏輯層實現類進行標註
@Controller 用於對控制層實現類進行標註
目前上述三種註解與@Component功能完全相同,僅僅是 名稱上的區別
使用註解定義屬性註入
@Autowired(相當於proerty元素)
功能:標註類的成員變量為自動裝配註入屬性
格式:定義在成員變量的上方
參數:required
可選值:true(默認值)/false
作用:標識該屬性是否必須註入,如果未對其指定註入的值, 則系統拋出異常
註入不同類別的屬性需要使用不同的註解
簡單類型:@Value
對象類型;@Qualifier
自動裝配類型識別(引用類型)
① 註入屬性類型為class
如果類名對應的類只有一個,註入成功 如果類名對應的類有多個,註入失敗
註入屬性類型為interface
如果不存在對應接口的實現類,註入失敗
如果對應接口的實現類為一個,註入成功
如果對應接口的實現類為多個,註入失敗
如果對應接口的實現類指定有bean名稱,則按照按照屬性 定義的名稱進行匹配
如果存在對應名稱的自動裝配bean,註入成功
如果不存在對應名稱的自動裝配bean,註入失敗
使用註解為屬性註入值
1、@Qualifier
功能:為屬性註入的Bean類型的值
格式:定義在成員變量的上方
註意:該註解與@Autowired配合使用
@Qualifier必須給出註入的bean的名稱
如果對應的bean不存在,拋出異常,註入失敗
為@Autowired指定參數required=false,避免註入失敗時候 拋出異常(當不能確定 Spring 容器中一定擁有某個類的 Bean 時,可以在需要自動註入該類 Bean 的地方可以使用 @Autowired(required = false),這等於告訴 Spring:在找不到匹配 Bean 時也不報錯)
使用註解@Resource為屬性註入
Spring提供對JSR-250中定義@Resource標準註解 的支持。
@Resource與@Autowired功能非常相似,用於 bean的自動裝配,格式略有區別
註解定義Bean的作用範圍
@Scope
功能:為當前Bean指定scope參數,默認singleton
格式:定義在類的上方
Bean配置(註解)