基於註解的DI

2021-08-07 10:51:11 字數 1723 閱讀 6011

上一回說到ioc的基於xml配置方法的注入,現在來聊一下基於註解的注入。。

使用註解會顯得比配置簡單好多,僅僅需要幾個註解就搞定了,比如下面的:

school

import org.springframework.beans.factory.annotation.value;

import org.springframework.stereotype.component;

@component("myschool") //表示當前類被spring所管理

public class school

//帶參的構造方法,將兩個屬性作為引數傳進來

public school(string sid, string sname)

public void setsid(string sid)

public void setsname(string sname)

public string getsid()

public string getsname()

@override

public string tostring() }

student

import org.springframework.beans.factory.annotation.value;

import org.springframework.stereotype.component;

@component("mystudent") //表示當前類被spring所管理

public class student

//帶參的構造方法

public student(string name, school school)

public void setname(string name)

public void setschool(school school)

public string getname()

public school getschool()

@override

public string tostring()

}

可見,使用註解只需要先在類的上面給個 @component  註解 這樣就等於跟spring說:「嘿!大哥,我這個需要你管理哦~」  然後在屬性上面也給了 @value 註解,並給出要注入的即可。。

當然,只在類上操作還不行,還需要在配置檔案中給出配置,畢竟容器都是讀配置檔案的,這個配置也超級簡單,只需要乙個叫  元件掃瞄器的東西就可以了,不過這個掃瞄器是context標籤的,所以要在配置檔案中引入context約束。

配置如下所示:

是的,這樣就可以了,其中 base-package 給出包路勁就行了,這個元件掃瞄器就會掃瞄給出的包中的bean。

需要注意的是,如果域屬性要用bytype方式的自動注入,要這樣配置

@autowired  

@qualifier("myschool")//bytype自動注入

private school school;//學生所讀學校

就是說不能缺少前面那個 @autowired 註解,可以這樣理解:這個註解只是宣告了自動注入,而且預設是byname方式,如果想要用bytype就要再配置乙個註解。  

基於註解的IOC和DI(下篇)

此篇為基於註解的ioc的下篇,有關於上篇請看spring入門到精通之基於xml的ioc 上篇 從上篇可以看到基於xml的方式還是比較繁瑣的,感覺就是在面向xml程式設計 因此spring框架的大佬也考慮到這一點,因此開發出基於註解的方式來配置,接下來看下註解是怎麼定義的吧!value引數可以省略,預...

spring基於註解的IOC和DI配置

註解 說明 component 使用在類上用於例項化bean controller 使用在web層類上用於例項化bean service 使用在service層類上用於例項化bean repository 使用在dao層類上用於例項化bean autowired 使用在字段上用於根據型別依賴注入 q...

Spring的IOC註解以及DI註解注入總結

一 ioc註解 1.多spring配置檔案的使用 2.使用xml配置進行配置 推薦使用xml配置加註解組合使用 第一步 要使用註解,需匯入aop包 第二步 在配置檔案頭部加入context的schema 第三步 使用註解,component 註解 3.實用配置類進行配置 一 1.不使用 bean註解...