中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring如何裝配bean

發布時間:2020-08-01 14:37:04 來源:億速云 閱讀:115 作者:小豬 欄目:編程語言

這篇文章主要講解了Spring如何裝配bean,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。

一 前言

在XML中進行顯式配置。

在Java中進行顯式配置。

隱式的bean發現機制和自動裝配

關于xml配置不會在本篇說明,有興趣的讀者可以自行了解學習;

二 自動裝配bean

自動裝配Bean主要通過如下兩個方式實現自動裝備bean

  • 組件掃描(component scanning):Spring會自動掃描發現上下文中所創建的bean;對應java配置@ComponentScan注解,其會默認會掃描與配置類相同的包和其子包;如果是xml就是<context:component-scan>
  • 自動裝配(autowiring):Spring自動化管理bean之間的依賴關系;java配置@Autowiring注解,相當于java規范中的@Inject注解;其可以使用在任何類的任何方法上;不建議將required屬性設置為false,否則如果在bean未裝配的情況下就會報空指針異常;
  • @Component注解:賦予spring上下文組件類一個ID;如果不指定value默認就是將類名的第一個字母變為小寫形式;其相當于java規范中的@Name注解;
     

敲黑板了:

理下思路我們可以通過@Component注解使用在多個類上實現多個bean;然后通過@Autowiring使用在方法上實現bean之間的依賴注入;最后通過@ComponentScan將所有bean掃入spring應用上下文;當然里面還有許多使用的小細節,要不然很容易出錯;

實現如下

2.1 棉被類

/**
 * @Author lsc
 * <p>棉被 </p>
 */
@Component
public class Quilt {

 // 質量
 private String quality;

 public void product(){
  System.out.println("生產與中國");
 }

// 省略set/get
}

2.2 被單類

/**
 * @Author lsc
 * <p> 被單</p>
 */
@Component//相當于@Component("sheet")
public class Sheet {

 // 顏色
 private String color;
 // 長度
 private String length;


 private Quilt quilt;
 // 使用構造器注入方式將Quilt注入到Sheet,你也可以使用set方式;原則上還可以其它方法
 public Sheet(Quilt quilt){
  this.quilt = quilt;
 }
// 省略set/get

}

2.3被單配置類

/**
 * @Author lsc
 * <p>被單配置類 </p>
 */
@Configuration//告訴spring這是一個配置類
@ComponentScan//這邊的包是com.zszxz.auto 相當于@ComponentScan(basePackages = {"com.zszxz.auto"})
public class SheetConfig {
}

2.4 測試類

/**
 * @Author lsc
 * <p> </p>
 */
@RunWith(SpringJUnit4ClassRunner.class)//創建spring應用上下文
@ContextConfiguration(classes= SheetConfig.class)//加載配置類
public class SheetTest {

 @Autowired
 Sheet sheet;

 @Test
 public void sheetTest(){
  // 生產與中國
  sheet.getQuilt().product();
 }
}

三 java配置

java配置只需要通過如下注解即可完成,通常使用在引入第三方類時;

  • @Configuration注解:告訴spring這是一個配置類
  • @Bean注解:告訴spring這是一個bean,使用在方法上,默認bean的名稱就是方法名也就是前面提到的bean的ID;
     

思路:@Configuration注解聲明的配置類中使用注解@Bean,就實現了java配置;

3.1 棉類

/**
 * @Author lsc
 * <p>棉 </p>
 */
public class Cotton {

 // 質量
 private String quality;

 public void product(){
  System.out.println("cotton生產與中國");
 }
 // 省略set/get
}

3.2 毛毯

/**
 * @Author lsc
 * <p> 毛毯</p>
 */
public class Blanket {

 // 顏色
 private String color;
 // 長度
 private String length;

 // 構造器注入
 private Cotton cotton;
 @Autowired
 public Blanket(Cotton cotton){
  this.cotton = cotton;
 }
 // 省略set/get
} 

3.3 毛毯配置類

/**
 * @Author lsc
 * <p>毛毯配置類 </p>
 */
@Configuration//告訴spring這是一個配置類,spring會掃描其所有配置納入spring容器
public class BlanketConfig {

 // 將Cotton注入到spring應用上下文
 @Bean
 public Cotton cotton(){
  return new Cotton();
 }

 // 將 Cotton注入到Blanket注入到spring應用上下文
 @Bean
 public Blanket blanket(Cotton cotton){
  return new Blanket(cotton);
 }
}

3.4 測試類

/**
 * @Author lsc
 * <p> </p>
 */
@RunWith(SpringJUnit4ClassRunner.class)//創建spring應用上下文
@ContextConfiguration(classes= BlanketConfig.class)//加載配置類
public class BlanketTest {

 @Autowired
 Blanket blanket;

 @Test
 public void sheetTest(){
  // cotton生產與中國
  blanket.getCotton().product();
 }
}

四 配置結合

使用 @Import 注解能將一個配置類導入另一個配置類, 通常用來合并配置類,下面的示例使用方式更加優雅;

使用示例

/**
 * @Author lsc
 * <p> </p>
 */
@Configuration
@Import({SheetConfig.class, BlanketConfig.class})
public class MergeConfig {
}

測試示例

/**
 * @Author lsc
 * <p> </p>
 */

@RunWith(SpringJUnit4ClassRunner.class)//創建spring應用上下文
@ContextConfiguration(classes= MergeConfig.class)//加載配置類
public class MergeTest {
 @Autowired
 Blanket blanket;

 @Test
 public void sheetTest(){
  // cotton生產與中國
  blanket.getCotton().product();
 }
}

看完上述內容,是不是對Spring如何裝配bean有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

二连浩特市| 抚顺县| 日照市| 奉新县| 察隅县| 浦县| 舟山市| 寿阳县| 清苑县| 灵宝市| 安平县| 两当县| 富锦市| 织金县| 平顺县| 阜阳市| 湄潭县| 西贡区| 溧阳市| 吴忠市| 和田县| 琼中| 涿州市| 津市市| 湘阴县| 德清县| 恩施市| 莆田市| 怀来县| 平阳县| 辽源市| 蓝田县| 屏山县| 措勤县| 麻江县| 祁东县| 鸡泽县| 凤冈县| 泊头市| 比如县| 平和县|