Spring的常用註解
阿新 • • 發佈:2021-01-19
一、用於建立物件的註解
使用註解需要在xml檔案中配置掃描註解配置的包
<context:component-scan base-package=“com.rpf”></context:component-scan>
@Component
作用:用於把當前類物件存入spring容器中
屬性:value用於指定bean的id。當我們不寫時 他的預設值是當前類名首字母改小寫
只有一個屬性時value可以不寫@Component(“accountService”)
它們的作用和xml檔案中編寫bean標籤實現的功能是一樣的
Controller:一般用在表現層
Repository:一般用於持久層 可以互相替換不建議
以上三個註解作用和屬性與Component時一模一樣的
它們三個是spring框架為我們提供明確的三層使用的註解 使我們的三層物件更加清晰
例
@Repository("accountDao1")
public class AccountDaoImpl implements AccountDao {
public void saveAccount(){
System.out.println("儲存了賬戶");
}
}
二、用於注入資料的
它們的作用和xml配置檔案中的bean標籤中寫一個 property標籤是一樣的
Autowired:
作用:自動按照型別注入。只要容器中有唯一的一個bean物件型別和要注入的變數型別匹配
就可以注入成功
如果ioc容器中沒有任何bean的型別和要注入的變數型別匹配 則報錯
如果ioc容器中有多個型別匹配時:
出現位置:可以是成員變數上也可以是方法上
細節:使用註解注入時set方法就不是必須的了
Qualifier:
作用:在按照型別注入的基礎之上按照名稱注入 它在給類成員注入時不能單獨使用 但是給類方法引數注入時可以
屬性 value用於指定注入bean的id
再給類成員注入時不能獨立使用必須和Autowired配合
作用:直接按照bean的id注入 可以獨立使用
屬性:name 用於指定bean的id
以上三個註解只能注入其他bean型別的資料 而基本型別和string型別無法使用上述註解
而集合型別的注入只能通過xml來實現。
@Value
作用 用於注入基本型別和string型別的資料
屬性 value用於指定資料的值 他可以使用spring中的SpEL(也就是Spring的EL表示式)
SpEL的寫法: ${表示式}
三、用於改變作用域的
用於改變作用範圍的
它們的作用就和bean標籤中使用scope屬性是一樣的
@Scope
作用:用於指定bean的作用範圍
屬性:value 指定範圍的取值 常用取值singleton prototype 單例 多例 預設是單例
測試:
業務層類上配置
@Service(value = "accountService")
@Scope("prototype")
public class AccountServiceImpl implements AccountService
AccountService as = (AccountService)ac.getBean("accountService");
AccountService as2 = (AccountService)ac.getBean("accountService");
System.out.println(as==as2);
四、和生命週期相關的(瞭解)
它們的作用就和bean標籤中init-method和destroy-method的作用是一樣的
@PreDestroy
作用:用於指定銷燬方法
@PostConstruct
作用:用於指定初始化方法
業務層配置
@PostConstruct
public void init(){
System.out.println("初始化方法執行了");
}
@PreDestroy
public void destroy(){
System.out.println("銷燬方法執行了");
}
測試
AccountService as = (AccountService)ac.getBean("accountService");
as.saveAccount();
ac.close();//單例的隨容器生命週期相同