天天看點

依賴注入 Bean 之 注解注入

引言
  1. 這是依賴注入 Bean 屬性的最後一種方式
  2. 其中針對 非 Web 項目和 Web 項目又有不同的細微差别
  3. 以下是筆記
名詞解釋
  1. 注解:
    1. 注解:就是一個類,使用@注解名稱
    2. 開發中:使用注解 取代 xml配置檔案
  2. eclipse 中 Servlet 的注解:
    1. 當建立動态web項目時候,version選擇 3.0 的前提下。
    2. 此時,可以選擇通過注解方式配置 Servlet,隻需要在 Servlet 前面加 @WebServlet 即可。
    3. 相對舊的配置 Servlet 方式而言,最大的變化在于不需要在 xml 檔案中配置。
  3. 對于非 web 項目所用注解:
    1. @Component :取代< bean class="">
    2. @Component(“id”) :取代 < bean id="" class="">
  4. 對于 web 項目,從 @Component 注解衍生出了 3 個專用注解,分别對應不同的層,以便于管理:
    1. @Repository(“名稱”) :對應dao層
    2. @Service(“名稱”) :對應service層
    3. @Controller(“名稱”) :對應web層
    1. @Autowired :自動根據類型注入
    2. @Qualifier(“名稱”) :指定自動注入的id名稱
    3. @Resource(“名稱”) :相當于 ④ + ⑤
    4. @ PostConstruct : 自定義初始化
    5. @ PreDestroy : 自定義銷毀
Sping 使用注解準備工作
  1. Spring 預設情況下,注解處于關閉狀态,此時,需要手動開啟
  2. 在 beans.xml 中修改為支援注解方式
    依賴注入 Bean 之 注解注入
  3. 然後根據注解的方式具體進行調用即可
非 Web 項目示例(不分 dao,service,web 層)
  1. 首先根據上文配置 beans.xml ,開啟注解
  2. 以下是兩種不同注解方式的示例

@Component方式

  1. service 類
    依賴注入 Bean 之 注解注入
  2. 測試類
    依賴注入 Bean 之 注解注入

@Component(“id”)

  1. service 類
    依賴注入 Bean 之 注解注入
  2. 測試類
    依賴注入 Bean 之 注解注入
Web 項目示例(分 dao,service,web 層)

若分層而不使用注解

  1. beans.xml 配置檔案
    依賴注入 Bean 之 注解注入
  2. 測試結果
    依賴注入 Bean 之 注解注入

分層且使用注解

  1. beasn.xml 配置檔案
    依賴注入 Bean 之 注解注入
  2. 三者之間調用關系
    依賴注入 Bean 之 注解注入
  3. 同樣的,這 3 個衍生注解也可以使用加入 id 的方式來實作精準調用
    依賴注入 Bean 之 注解注入
  4. 在這裡,需要先在注解後加入 Id,然後再需還要調用的地方使用 Qualifier(“名稱”) 來達到指定注解的效果。 這裡僅作代碼示範。

分層時使用不同名稱衍生注解意義

  1. 對于 web 項目,不同層之間又有個調用與被調用的關系,一般 dao 是處于最底層被調用 ,service 處于中間層 ,web 處于更高一層。若較高一層想要調用較低一層,前提是較低一層已經被實作。
  2. 當使用這些不同的注解的時候,系統就根據不同名稱對應的不同層,優先尋找 dao 層,然後在容器中建立這個對象。繼而是 Service 層,web 層。
  3. 這樣,當通過 Spring 方式,較高一層調用較低一層時,Spring 容器内就已經生成了這個較低層的 Bean,進而避免了調用報錯的情況。