在 Spring Boot 中使用 @Autowired和 @Bean注解的示例詳解
在 Spring Boot 中使用 @Autowired 和 @Bean 注解
在 Spring Boot 中,依賴注入(Dependency Injection,簡(jiǎn)稱 DI)是通過 @Autowired
注解來實(shí)現(xiàn)的,能夠有效地簡(jiǎn)化對(duì)象之間的依賴關(guān)系。同時(shí),使用 @Bean
注解可以幫助我們?cè)谂渲妙愔酗@式地定義和初始化 Bean。本文將通過一個(gè)具體示例,演示如何在 Spring Boot 中使用 @Autowired
和 @Bean
來管理 Bean。
示例背景
假設(shè)我們有一個(gè) Student
類,并希望通過配置類 TestConfig
來初始化 Student
對(duì)象,之后在測(cè)試類中通過 @Autowired
注解將其自動(dòng)注入并使用。
1. 定義 Student 類
首先,我們定義一個(gè)簡(jiǎn)單的 Student
類,使用 @Data
注解來生成常見的 Getter、Setter、toString
等方法。
import lombok.Data; @Data public class Student { private String name; }
在上面的 Student
類中,@Data
注解來自 Lombok,它會(huì)自動(dòng)為我們生成類的所有 Getter、Setter 和 toString
等方法。這樣,我們就不需要手動(dòng)編寫這些常見的代碼,使得代碼更加簡(jiǎn)潔。
2. 配置類:初始化 Bean
接下來,我們需要?jiǎng)?chuàng)建一個(gè)配置類 TestConfig
,其中定義一個(gè) @Bean
注解的方法來初始化 Student
對(duì)象。
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class TestConfig { @Bean public Student studentInit() { Student student = new Student(); student.setName("初始化"); return student; } }
@Configuration
注解表示該類是一個(gè)配置類,Spring 會(huì)掃描該類并根據(jù)其中的 Bean 定義來初始化 Bean。@Bean
注解用于告訴 Spring 容器:studentInit()
方法返回的對(duì)象(在這里是Student
)應(yīng)該作為一個(gè) Bean 進(jìn)行管理。這樣,Student
對(duì)象就會(huì)成為 Spring 容器中的一個(gè)管理對(duì)象。
在這個(gè)配置類中,我們顯式地初始化了一個(gè) Student
對(duì)象,并設(shè)置了它的 name
屬性為 "初始化"
。
3. 測(cè)試類:
使用 @Autowired
注解自動(dòng)注入 Bean
在測(cè)試類中,我們將通過 @Autowired
注解將 Student
對(duì)象自動(dòng)注入,并輸出 Student
的名字。
import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest public class StudentTest { @Autowired private Student student; @Test void contextLoads13() { System.out.println(student.getName()); // 輸出:初始化 } }
@SpringBootTest
注解表示這是一個(gè) Spring Boot 測(cè)試類,它會(huì)啟動(dòng) Spring 容器來進(jìn)行集成測(cè)試。@Autowired
注解自動(dòng)注入Student
Bean。Spring 會(huì)自動(dòng)找到符合類型的Student
Bean 并注入到該字段中。- 在測(cè)試方法
contextLoads13()
中,調(diào)用student.getName()
輸出Student
對(duì)象的name
屬性值,應(yīng)該輸出"初始化"
,這與我們?cè)?TestConfig
中定義的值一致。
4. Spring Boot 的自動(dòng)裝配
- 在這個(gè)示例中,我們看到通過
@Autowired
注解,Spring 容器會(huì)根據(jù)Student
類型自動(dòng)為我們注入合適的 Bean。無需手動(dòng)配置或創(chuàng)建實(shí)例。 - 這種自動(dòng)注入機(jī)制是 Spring Framework 中非常強(qiáng)大的特性,可以極大地簡(jiǎn)化類與類之間的依賴管理。
5. 總結(jié)
通過上述示例,我們學(xué)到了以下幾點(diǎn):
@Bean
注解:通過該注解,我們可以在配置類中顯式地定義 Bean,使得對(duì)象被 Spring 容器管理。@Autowired
注解:通過該注解,Spring 會(huì)自動(dòng)根據(jù)類型將 Bean 注入到需要依賴的地方。@Data
注解:簡(jiǎn)化了Student
類的代碼,不必手動(dòng)編寫 Getter、Setter 等方法。
在實(shí)際開發(fā)中,Spring 的依賴注入(DI)功能使得類之間的耦合度大大降低,提高了代碼的可維護(hù)性和擴(kuò)展性。通過靈活使用 @Autowired
和 @Bean
注解,可以有效地管理和共享對(duì)象。
到此這篇關(guān)于在 Spring Boot 中使用 `@Autowired` 和 `@Bean` 注解的文章就介紹到這了,更多相關(guān)springboot @Autowired和@Bean注解內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot導(dǎo)出Excel表格到指定路徑的代碼詳解
Spring Boot導(dǎo)出Excel通常涉及到使用第三方庫如Apache POI或者XlsxWriter等,它們能幫助你在Spring應(yīng)用中生成并下載Excel文件,那么SpringBoot如何導(dǎo)出Excel表格到指定路徑,本文將給大家詳細(xì)的介紹一下2024-07-07Java如何主動(dòng)從當(dāng)前線程獲取異常信息
這篇文章主要介紹了Java如何主動(dòng)從當(dāng)前線程獲取異常信息,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10老生常談foreach(增強(qiáng)for循環(huán))和for的區(qū)別
下面小編就為大家?guī)硪黄仙U刦oreach(增強(qiáng)for循環(huán))和for的區(qū)別。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-09-09Spring實(shí)現(xiàn)三級(jí)緩存機(jī)制
三級(jí)緩存機(jī)制是Spring解決循環(huán)依賴問題的關(guān)鍵,本文主要介紹了Spring實(shí)現(xiàn)三級(jí)緩存機(jī)制,具有一定的參考價(jià)值,感興趣的可以了解一下2025-02-02Java Thread之Sleep()使用方法及總結(jié)
這篇文章主要介紹了Java Thread之Sleep()使用方法及總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11Java實(shí)現(xiàn)經(jīng)典拳皇誤闖冒險(xiǎn)島游戲的示例代碼
《拳皇誤闖冒險(xiǎn)島》是拳皇和冒險(xiǎn)島素材的基于JavaSwing的動(dòng)作類游戲。本文將用Java語言實(shí)現(xiàn)這一游戲,需要的小伙伴可以參考一下2022-02-02Java 實(shí)戰(zhàn)項(xiàng)目錘煉之樸素風(fēng)格個(gè)人博客系統(tǒng)的實(shí)現(xiàn)流程
讀萬卷書不如行萬里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用Java+vue+Springboot+ssm+mysql+maven+redis實(shí)現(xiàn)一個(gè)樸素風(fēng)格的個(gè)人博客系統(tǒng),大家可以在過程中查缺補(bǔ)漏,提升水平2021-11-11spring boot使用sharding jdbc的配置方式
這篇文章主要介紹了spring boot使用sharding jdbc的配置方式,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-12-12