SpringBoot 創(chuàng)建對(duì)象常見的幾種方式小結(jié)
在 Spring Boot 中,將 Bean 對(duì)象添加到 IOC 容器中,通用的有下面幾種方式:
- 使用
@Component、@Service、@Repository或@Controller注解 - 使用
@Configuration和@Bean注解 - 使用
@Import注解導(dǎo)入其他配置類 - 通過
ApplicationContext編程方式手動(dòng)注冊(cè) Bean
1. 使用 @Component(或 @Service、@Repository、@Controller)注解
最常見的方式,Spring 會(huì)自動(dòng)掃描并將帶有這些注解的類注冊(cè)為 Bean。
import org.springframework.stereotype.Component;
@Component
public class User {
public void say() {
System.out.println("Hello User!");
}
}
配置掃描路徑(通常在 @SpringBootApplication 上已經(jīng)啟用了掃描,如果需要指定包路徑,可以使用 @ComponentScan 注解):
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
在 Spring Boot 啟動(dòng)時(shí),@Component 注解的類會(huì)自動(dòng)注冊(cè)為 Bean,并添加到 IOC 容器中。
2. 使用 @Configuration 和 @Bean 注解
通過在 @Configuration 注解的配置類中使用 @Bean 注解,可以手動(dòng)將對(duì)象添加到 Spring 容器中。
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class BeanConfig {
@Bean
public User user() {
return new User();
}
}
User 類:
public class user {
public void say() {
System.out.println("Hello User!");
}
}
BeanConfig 類使用 @Bean 注解注冊(cè)了一個(gè) user 實(shí)例,Spring 會(huì)將其自動(dòng)加入到 IOC 容器中。
3. 使用 @Import 注解導(dǎo)入配置類
@Import 注解可以導(dǎo)入其他配置類,將其配置的 Bean 添加到當(dāng)前應(yīng)用的 IOC 容器中。
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
@Configuration
@Import(BeanConfig.class)
public class MainConfig {
// 通過 @Import 導(dǎo)入 BeanConfig 中的 Bean
}
MainConfig 類通過 @Import(BeanConfig.class) 導(dǎo)入了 BeanConfig 中定義的所有 Bean,這樣 MyBean 也會(huì)被注冊(cè)到 IOC 容器中。
4. 使用 ApplicationContext 編程方式手動(dòng)注冊(cè) Bean
在某些特殊的場(chǎng)景中,可能需要手動(dòng)編程注冊(cè) Bean,這時(shí)可以使用 AnnotationConfigApplicationContext 或 GenericWebApplicationContext 類。
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class ManualBeanRegistration {
public static void main(String[] args) {
// 創(chuàng)建 Spring 容器
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
// 注冊(cè)配置類
context.register(BeanConfig.class);
// 啟動(dòng)容器
context.refresh();
// 獲取并使用 Bean
MyBean myBean = context.getBean(MyBean.class);
myBean.printMessage();
// 關(guān)閉容器
context.close();
}
}
通過 AnnotationConfigApplicationContext 顯式地手動(dòng)注冊(cè)了 BeanConfig 配置類,并啟動(dòng)了 Spring 容器。
總結(jié)
@Component注解(及其衍生注解@Service、@Repository、@Controller)是最常用的方式,通過自動(dòng)掃描自動(dòng)將 Bean 注冊(cè)到 IOC 容器中。@Configuration和@Bean注解 可以在配置類中手動(dòng)注冊(cè) Bean。@Import注解 可以將其他配置類中的 Bean 導(dǎo)入到當(dāng)前配置類中。- 手動(dòng)注冊(cè) 通過
ApplicationContext等類可以編程方式注冊(cè) Bean。
到此這篇關(guān)于SpringBoot 創(chuàng)建對(duì)象常見的幾種方式小結(jié)的文章就介紹到這了,更多相關(guān)SpringBoot 創(chuàng)建對(duì)象內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
logback FixedWindowRollingPolicy固定窗口算法重命名文件滾動(dòng)策略
這篇文章主要介紹了FixedWindowRollingPolicy根據(jù)logback 固定窗口算法重命名文件滾動(dòng)策略源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11
關(guān)于maven項(xiàng)目中使用BCrypt加密方式
BCrypt是一種基于Blowfish加密算法的密碼散列函數(shù),用于安全存儲(chǔ)和驗(yàn)證用戶密碼,它通過引入鹽和工作因子增加計(jì)算復(fù)雜度,有效防止彩虹表攻擊和破解,BCrypt具備適應(yīng)性工作因子、成本參數(shù)調(diào)整、迭代哈希和密鑰擴(kuò)展等特點(diǎn),被廣泛應(yīng)用于Web應(yīng)用程序的安全性設(shè)計(jì)中2024-10-10
SpringCloud組件OpenFeign之?dāng)r截器解讀
這篇文章主要介紹了SpringCloud組件OpenFeign之?dāng)r截器用法。具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04
SpringBoot整合mybatis-plus快速入門超詳細(xì)教程
mybatis-plus 是一個(gè) Mybatis 的增強(qiáng)工具,在 Mybatis 的基礎(chǔ)上只做增強(qiáng)不做改變,為簡(jiǎn)化開發(fā)、提高效率而生,本文給大家分享SpringBoot整合mybatis-plus快速入門超詳細(xì)教程,一起看看吧2021-09-09
詳解springMVC之與json數(shù)據(jù)交互方法
本篇文章主要介紹了詳解springMVC之與json數(shù)據(jù)交互方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-05-05
springboot實(shí)現(xiàn)https雙向傳輸協(xié)議的示例代碼
本文主要介紹了springboot實(shí)現(xiàn)https雙向傳輸協(xié)議的示例代碼,包含配置證書和私鑰路徑、調(diào)用請(qǐng)求方法等步驟,具有一定的參考價(jià)值,感興趣的可以了解一下2025-03-03

