Spring 中常用的註解

2022-06-14 18:18:10 字數 4293 閱讀 7488

(1).用於註冊bean物件的註解

1.1@component:

作用: 呼叫無參構造建立乙個bean物件,並把物件存入spring的ioc容器,交由spring容器進行管理。相當於在xml中配置乙個bean。

屬性: value:指定bean的id。如果不指定value屬性,預設bean的id是當前類的類名。首字母小寫。

1.2@controller

作用: 呼叫無參構造建立乙個bean物件,並把物件存入spring的ioc容器,交由spring容器進行管理。相當於在xml中配置乙個bean。一般用於表現層的註解

屬性: value:指定bean的id。如果不指定value屬性,預設bean的id是當前類的類名。首字母小寫。

1.3@service

作用: 呼叫無參構造建立乙個bean物件,並把物件存入spring的ioc容器,交由spring容器進行管理。相當於在xml中配置乙個bean。一般用於業務層的註解

屬性: value:指定bean的id。如果不指定value屬性,預設bean的id是當前類的類名。首字母小寫。

1.4@repository

作用: 呼叫無參構造建立乙個bean物件,並把物件存入spring的ioc容器,交由spring容器進行管理。相當於在xml中配置乙個bean。一般用於持久層的註解

屬性: value:指定bean的id。如果不指定value屬性,預設bean的id是當前類的類名。首字母小寫。

1.5@bean

作用:用於把當前方法的返回值作為bean物件存入spring的ioc容器中 屬性:name:用於指定bean的id。當不寫時,預設值是當前方法的名稱。注意:當我們使用註解配置方法時,如果方法有引數,spring框架會去容器中查詢有沒有可用的bean物件,查詢的方式和autowired註解的作用是一樣的。

例: 獲取datasource物件 @return @bean(value = "datasource") public datasource getdatasource()catch(exception exception)

}(2).用於依賴注入的註解

2.1@autowired

作用:@autowired和@resource**都是spring支援的註解形式動態裝配bean的方式。@autowired預設按照型別(bytype)裝配,如果想要按照名稱(byname)裝配,需結合@qualifier註解使用。

屬性:required:@autowired註解預設情況下要求依賴物件必須存在。如果不存在,則在注入的時候會丟擲異常。如果允許依賴物件為null,需設定required屬性為false。

例: @autowired @qualifier("userservice")

private userservice userservice;

2.2@qualifier

作用:在自動按照型別注入的基礎之上,再按照 bean 的 id 注入。它在給字段注入時不能獨立使用,必須和@autowire一起使用;但是給方法引數注入時,可以獨立使用。 在自動按照型別注入的基礎之上,再按照bean的id注入.它在給字段注入時不能獨立使用,必須和@autoire一起使用;但是給方法引數注入時,可以獨立使用。

屬性:value:用於指定要注入的bean的id,其中,該屬性可以省略不寫

例:@autowire

@qualifier(value="userservice")

//@qualifier("userservice") //value屬性可以省略不寫

private userservice userservice;

2.3 @resource

作用:@autowire和@resource都是spring支援的註解形式動態裝配bean的方式。@resource預設按照名稱(byname)裝配,名稱可以通過name屬性指 定。如果沒有指定name,則註解在字段上時,預設取(name=欄位名稱)裝配。如果註解在setter方法上時,預設取(name=屬性名稱)裝配。

屬性:name:用於指定要注入的bean的id

type:用於指定要注入的bean的type

裝配順序

1.如果同時指定name和type屬性,則找到唯一匹配的bean裝配,未找到則拋異常;

2.如果指定name屬性,則按照名稱(byname)裝配,未找到則拋異常;

3.如果指定type屬性,則按照型別(bytype)裝配,未找到或者找到多個則拋異常;

4.既未指定name屬性,又未指定type屬性,則按照名稱(byname)裝配;如果未找到,則按照型別(bytype)裝配。

例:@resource(name="userservice")

//@resource(type="userservice")

//@resource(name="userservice", type="userservice")

private userservice userservice;

2.4 @value

作用:通過@value可以將外部的值動態注入到bean中,可以為基本型別資料和string型別資料的變數注入資料

例:// 1.基本型別資料和string型別資料的變數注入資料

@value("tom")

private string name;

@value("18")

private integer age;

// 2.從properties配置檔案中獲取資料並設定到成員變數中

// 2.1jdbcconfig.properties配置檔案定義如下

jdbc.driver \= com.mysql.jdbc.driver

jdbc.url \= jdbc:mysql://localhost:3306/eesy

jdbc.username \= root

jdbc.password \= root

// 2.2獲取資料如下

@value("$")

private string driver;

@value("$")

private string url;

@value("$")

private string username;

@value("$")

private string password;

(3)用於改變bean作用範圍的註解

3.1@scope

作用:指定bean的作用範圍

屬性:value:

1)singleton:單例

2)prototype:多例

3)request:

4)session:

5)globalsession:

例:@autowire

@scope(value="prototype")

private userservice userservice;

(4)生命週期相關的註解

@postconstruct

作用:指定初始化方法

例:@postconstruct

public void init()

4.2 @predestroy

作用:

指定銷毀方法

例:@predestroy

public void destroy()

-----dao

@repository --寫在dao層

-----service

@service --寫在service層

-----controller

@controller --寫在controller層

@scope --寫在多人訪問controller上 單例

@scope("prototype") 多例

-----屬性注入

@autowired --寫在需要注入的屬性上

@resource(name="loginservice")與autowired類似,但是需要通過指定名字去尋找找對應名字的注入物件

@inject 與autowired和resource

-----資源處理

也可以寫在controller上,controller上的也可以省略

Spring中常用註解

註解的好處在於大大的減少了人們開發的程式設計量,提高了程式設計效率,那麼下面就接受經常用到的一些註解及其含義等。componentscan 元件掃瞄,可自動發現和裝配一些bean。component可配合commandlinerunner使用,在程式啟動後執行一些基礎任務。restcontrolle...

Spring中常用的註解

1 configuration 表明這個乙個配置類,主要用於配置bean。例如通過 bean註解往ioc容器中新增bean configuration public class mainconfig public class main 2 componetscan 可以掃瞄指定包下的帶有 compo...

Spring 中常用的幾種註解

spring 2.5 中除了提供 component 注釋外,還定義了幾個擁有特殊語義的注釋,它們分別是 repository service 和 controller。在目前的 spring 版本中,這 3 個注釋和 component 是等效的,但是從注釋類的命名上,很容易看出這 3 個注釋分別...