日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring bean 装配

發布時間:2025/3/8 javascript 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring bean 装配 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

裝配 bean

1. 自動化裝配

@Component

告知Spring為被注解的類創建bean
> 為bean命名: > + Spring為Bean默認命名為類名首字母小寫 > + @Component("XXX") > + @Named("XXX")

@ComponentScan

組件掃描默認不可用,需用此注解顯式配置

設置組件掃描基礎包:

  • 默認以配置類(帶@Configuration)所在的包為基礎包
  • @ComponentScan({"XXX", "XXX2"})/@ComponentScan(basePackages = {"XXX", "XXX2"})指定基礎包,使用String作為value值,類型不安全
  • @ComponentScan(basePackageClasses = {XXX.class, XXX2.class}) 使用類來作為value值,這些類所在的包將作為基礎包;

注: 也可以在包中創建僅用于掃描的空標記接口,使用其作為value值;

@Autowire

自動裝配,將已創建的bean自動注入到當前類中,可用于:

  • 構造器
@Autowiredpublic CDPlayer(CopactDisc cd){this.cd = cd;} 復制代碼> + 屬性的Setter方法 復制代碼 @Autowiredpublic void setCompactDisc(CopactDisc cd){this.cd = cd;} 復制代碼> + 類的任何方法上 復制代碼 @Autowiredpublic void insertDisc(CompactDisc cd){this.cd = cd;} 復制代碼

自動裝配結果:

  • 有且只有一個bean匹配依賴需求,將其裝配進來
  • 沒有匹配的bean,創建應用上下文時,Spring拋出異常;若要避免,將@Autowired的required屬性設置為false,此時,要裝配的bean為null,需要代碼進行null檢查
  • 多個匹配的bean,Spring拋出異常

@Named 和 @Inject

@Inject注解來源于java依賴注入規范,大部分情況下可與@Autowired互換

2. 通過代碼裝配Bean

若想將第三方庫中的組件裝配到應用中,無法添加自動掃描和裝配的注解,此時,需要采用顯式裝配的方式。

XML

javaConfig

更強大、類型安全、對重構友好

  • 不應該包含任何業務邏輯
  • 不應該侵入到任何業務邏輯代碼中(不和其他類發生關聯)
  • 通常放到單獨的包中

創建一個配置類

import org.springframework.context.annotation.Configuration@Configuration//表明這個類是配置類 public class TestConfig { } 復制代碼

@Bean

聲明一個簡單bean

此注解告訴Spring:

  • 被其標記的方法返回的對象,要注冊為Spring上下文中的bean; 方法體中包含最終產生bean實例的邏輯.
@Bean public BeanObject createBean(){return new BeanObject(); } 復制代碼
  • Bean的id默認和被注解的方法名一樣,支持重命名,使用Bean注解的name屬性

Bean注入

  • 方式1: 引用創建Bean的方法 eg: 若要在BeanObject2中注入BeanObject1,如下
@Bean public BeanObject2 inject(){return new BeanObject2(createBean()); }@Bean public BeanObject2 inject2(){return new BeanObject2(createBean()); } 復制代碼

Spring會攔截所有對createBean()方法的調用,并確保直接返回該方法所創建的bean; Spring默認是單例的,上述代碼中,兩個BeanObject2的bean中注入的是同一個BeanObject1的bean

  • 方式2: 請求一個實現類bean的接口類型作為參數
/**假設BeanObject是接口BeanObject1Interface的實現類 **/ @Bean public BeanObject2 inject(BeanObject1Interface object1){return new BeanObject2(object1); } 復制代碼

這是引用其他bean的最佳選擇,不要求將BeanObject1Interface聲明到同一個配置類中,甚至沒要求其必須在javaConfig中聲明,可以通過組件掃描或xml進行配置。不管接口是采用什么方式創建出來的,Spring都會將其傳入到配置方法中,用來創建BeanObject2 bean。

另外,除了構造器,我們還可以使用任何java功能來產生bean實例,比如setter方法等。

3. XML裝配

Spring Tool Suite: spring.io/tools 此工具有Eclipse、Visual Studio Code、Atom支持,可幫助我們編寫xml配置文件

  • 對強依賴使用構造器注入;對選擇性的依賴使用屬性注入。

總結

以上是生活随笔為你收集整理的Spring bean 装配的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。