引言
- 這是依賴注入 Bean 屬性的最後一種方式
- 其中針對 非 Web 項目和 Web 項目又有不同的細微差别
- 以下是筆記
名詞解釋
- 注解:
- 注解:就是一個類,使用@注解名稱
- 開發中:使用注解 取代 xml配置檔案
- eclipse 中 Servlet 的注解:
- 當建立動态web項目時候,version選擇 3.0 的前提下。
- 此時,可以選擇通過注解方式配置 Servlet,隻需要在 Servlet 前面加 @WebServlet 即可。
- 相對舊的配置 Servlet 方式而言,最大的變化在于不需要在 xml 檔案中配置。
- 對于非 web 項目所用注解:
- @Component :取代< bean class="">
- @Component(“id”) :取代 < bean id="" class="">
- 對于 web 項目,從 @Component 注解衍生出了 3 個專用注解,分别對應不同的層,以便于管理:
- @Repository(“名稱”) :對應dao層
- @Service(“名稱”) :對應service層
- @Controller(“名稱”) :對應web層
- @Autowired :自動根據類型注入
- @Qualifier(“名稱”) :指定自動注入的id名稱
- @Resource(“名稱”) :相當于 ④ + ⑤
- @ PostConstruct : 自定義初始化
- @ PreDestroy : 自定義銷毀
Sping 使用注解準備工作
- Spring 預設情況下,注解處于關閉狀态,此時,需要手動開啟
- 在 beans.xml 中修改為支援注解方式
依賴注入 Bean 之 注解注入 - 然後根據注解的方式具體進行調用即可
非 Web 項目示例(不分 dao,service,web 層)
- 首先根據上文配置 beans.xml ,開啟注解
- 以下是兩種不同注解方式的示例
@Component方式
- service 類
依賴注入 Bean 之 注解注入 - 測試類
依賴注入 Bean 之 注解注入
@Component(“id”)
- service 類
依賴注入 Bean 之 注解注入 - 測試類
依賴注入 Bean 之 注解注入
Web 項目示例(分 dao,service,web 層)
若分層而不使用注解
- beans.xml 配置檔案
依賴注入 Bean 之 注解注入 - 測試結果
依賴注入 Bean 之 注解注入
分層且使用注解
- beasn.xml 配置檔案
依賴注入 Bean 之 注解注入 - 三者之間調用關系
依賴注入 Bean 之 注解注入 - 同樣的,這 3 個衍生注解也可以使用加入 id 的方式來實作精準調用
依賴注入 Bean 之 注解注入 - 在這裡,需要先在注解後加入 Id,然後再需還要調用的地方使用 Qualifier(“名稱”) 來達到指定注解的效果。 這裡僅作代碼示範。
分層時使用不同名稱衍生注解意義
- 對于 web 項目,不同層之間又有個調用與被調用的關系,一般 dao 是處于最底層被調用 ,service 處于中間層 ,web 處于更高一層。若較高一層想要調用較低一層,前提是較低一層已經被實作。
- 當使用這些不同的注解的時候,系統就根據不同名稱對應的不同層,優先尋找 dao 層,然後在容器中建立這個對象。繼而是 Service 層,web 層。
- 這樣,當通過 Spring 方式,較高一層調用較低一層時,Spring 容器内就已經生成了這個較低層的 Bean,進而避免了調用報錯的情況。