成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Spring竟然支持這么多數(shù)據(jù)類型的注入方式!

開發(fā) 前端
使用@Lazy注解后,注入的將會是一個代理對象,只有真正使用到的時候才會去真實的獲取具體的bean。

環(huán)境:Spring5.3.23

1. Optional

該類是java1.8提供,java.util.Optional<T>。

static class CommonDAO {
}
static class CommonService {
  @Resource
  private Optional<CommonDAO> optional ;
  @Override
  public String toString() {
    return "CommonService [optional=" + optional.orElseGet(() -> null) + "]";
  }
}
try (AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(CommonDAO.class, CommonService.class)) {
  System.out.println(context.getBean(CommonService.class)) ;
}

輸出

CommonService [optional=xxx.CommonDAO@12d4bf7e]

2. ObjectFactory

該類Spring提供,org.springframework.beans.factory.ObjectProvider

static class CommonService {
  @Resource
  private ObjectProvider<CommonDAO> provider ;
  @Override
  public String toString() {
    return "CommonService [provider=" + provider.getIfAvailable() + "]";
  }
}

輸出

CommonService [provider=xxx.CommonDAO@11a9e7c8]

3. Provider

static class CommonService {
  @Resource
  private javax.inject.Provider<CommonDAO> provider ;
  @Override
  public String toString() {
    return "CommonService [provider=" + provider.get() + "]";
  }
}

輸出

CommonService [provider=xxx.CommonDAO@2f177a4b]

注意:如果你的環(huán)境中沒有javax.inject.Provider,你需要引入以下包:

<dependency>
  <groupId>javax.inject</groupId>
  <artifactId>javax.inject</artifactId>
  <version>1</version>
</dependency>

4. 數(shù)組

static interface DAO {}
static class DogDAO implements DAO {}
static class CatDAO implements DAO {}
static class CommonService {
  @Resource
  private DAO[] daos ;
  @Override
  public String toString() {
    return "CommonService [daos=" + Arrays.toString(this.daos) + "]";
  }
}

輸出

CommonService [daos=[xxx.DogDAO@4445629, xxx.CatDAO@45b9a632]]

5. Collection集合

static class CommonService {
  @Resource
  private List<DAO> daos ;
  @Override
  public String toString() {
    return "CommonService [daos=" + daos + "]";
  }
}

輸出

CommonService [daos=[xxx.DogDAO@309e345f, xxx.CatDAO@56a6d5a6]]

6. Map集合

static class CommonService {
  @Resource
  private Map<String, DAO> daos ;
  @Override
  public String toString() {
    return "CommonService [daos=" + daos + "]";
  }
}

輸出

CommonService [daos={dataTypeInejctMain.DogDAO=xxx.DogDAO@4445629, dataTypeInejctMain.CatDAO=xxx.CatDAO@45b9a632}]

7. 特殊說明

7.1 使用@Value注解

1. 注入普通字面量

static class CommonService {
  @Value("${pack.name}")
  private String name ;


  @Override
  public String toString() {
    return "CommonService [name=" + name + "]";
  }
}
// 注備環(huán)境
pack.name=中國????

輸出

CommonService [name=中國????]

2. 根據(jù)SpEL表達式注入

static class CommonService {
  @Value("#{${pack.name}}")
  private CommonDAO dao ;


  @Override
  public String toString() {
    return "CommonService [name=" + dao + "]";
  }
}
// 注備環(huán)境, 這里是配置的其它bean的名稱
pack.name=commonDao
// 注冊Bean
try (AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext()) {
  // ...
  context.registerBean("commonDao", CommonDAO.class) ;
  context.register(CommonService.class) ;
  // ...
  System.out.println(context.getBean(CommonService.class)) ;
}

輸出

CommonService [name=xxx.CommonDAO@29176cc1]

3. 注入基本數(shù)據(jù)

static class CommonService {
  // 會自動將值轉換為Integer
  // 只要Spring的類型轉換器支持的都可以通過下面方式注入
  @Value("666")
  private int id ;


  @Override
  public String toString() {
    return "CommonService [id=" + id + "]";
  }
}

輸出

CommonService [id=666]

7.2 使用@Lazy注解

使用@Lazy注解后,注入的將會是一個代理對象,只有真正使用到的時候才會去真實的獲取具體的bean。

static class CommonService {
  @Resource
  @Lazy
  private CommonDAO commonDao ;
  @Override
  public String toString() {
    return "CommonService [commonDao=" + commonDao.getClass() + "]";
  }
}

輸出

CommonService [commonDao=class xxx.CommonDAO$$EnhancerBySpringCGLIB$$39f36385]

以上是本篇文章的全部內(nèi)容,希望對你有所幫助。

完畢?。。?/span>

責任編輯:武曉燕 來源: Spring全家桶實戰(zhàn)案例源碼
相關推薦

2023-09-14 08:16:50

Lazy注解null

2019-07-05 15:52:03

數(shù)據(jù)科學家大數(shù)據(jù)機器學習

2020-06-01 08:04:18

三目運算符代碼

2024-04-29 09:38:16

2021-02-03 20:19:08

Istio流量網(wǎng)格

2022-03-03 07:00:43

Mybatiswhere標簽

2021-05-11 07:42:59

BeanSpring屬性

2021-06-10 09:00:33

單例模式數(shù)據(jù)庫

2018-06-05 11:06:05

模塊化數(shù)據(jù)中心管理

2020-12-01 08:19:15

Redis

2021-02-03 08:24:32

JavaScript技巧經(jīng)驗

2025-05-26 09:30:00

SQL數(shù)據(jù)庫索引

2020-07-21 18:37:14

代碼條件變量

2021-05-27 07:54:21

JavaStateAQS

2021-10-11 08:21:23

@Valuespringspring框架

2015-03-27 10:20:41

谷歌地圖谷歌偉大

2012-07-17 09:16:16

SpringSSH

2021-09-03 00:31:17

iPhone手機截圖

2019-08-12 11:40:48

數(shù)據(jù)庫SQLite3數(shù)據(jù)類型

2019-12-09 10:13:20

HashMap選擇容量
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: av在线一区二区三区 | 国产一区二区三区精品久久久 | 亚洲国产精品视频 | 亚洲精品美女视频 | 奇米四色在线观看 | 中文字幕视频在线 | a国产视频| 国产精品久久久一区二区三区 | 久久精品一二三影院 | 蜜桃精品视频在线 | 91精品导航| 男人视频网站 | 亚洲欧美激情国产综合久久久 | 久草综合在线视频 | 欧洲精品在线观看 | 久久99深爱久久99精品 | 一区二区三区视频 | 99re在线视频观看 | 毛片网站免费观看 | 777zyz色资源站在线观看 | 2021狠狠干| 免费在线a视频 | www.久久 | 亚洲免费视频在线观看 | 天天草天天干 | 色综合视频 | 久久99精品久久久久久 | 国产 欧美 日韩 一区 | 丝袜美腿一区 | 久久夜色精品国产 | av大片| 亚洲一区视频在线 | 精品亚洲一区二区三区 | 97伊人 | 欧美日韩在线免费 | 日韩欧美在线观看 | 一区中文字幕 | 天天狠狠| 日韩午夜 | 91亚洲国产成人久久精品网站 | 欧美日韩在线不卡 |