亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

怎么在Spring中引入多對象

發布時間:2021-05-10 16:05:19 來源:億速云 閱讀:213 作者:Leah 欄目:編程語言

本篇文章為大家展示了怎么在Spring中引入多對象,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

1.創建Bean

1.1如果使用方法bean注入對象, 給@Bean添加name值.

@Bean(name="別名")

代碼樣例:

注意

下面的@Bean(name = "test01DataSource"), 可以使用applicationContext.getBean("test01DataSource") 進行獲取.

@Primary表示 如果以type類型進行選擇的話, 首選該Bean.

也即是說,使用applicationContext.getBean(DataSource.class) 和applicationContext.getBean("test01DataSource") 獲取到的是同一個對象.

源碼:

@Configuration
public class DataSourceConfig {
  @Bean(name = "test01DataSource")
  @Primary
  @ConfigurationProperties(prefix = "spring.datasource.test01")
  public DataSource getTest01DataSource() {
    return DataSourceBuilder.create().build();
  }
  @Bean(name = "test02DataSource")
  @ConfigurationProperties(prefix = "spring.datasource.test02")
  public DataSource test02DataSource() {
    return DataSourceBuilder.create().build();
  }
}

測試代碼:

@Autowired
ApplicationContext applicationContext;
@Test
public void testDataSourceHashCode() {
  System.out.println(applicationContext.getBean(DataSource.class).hashCode());
  System.out.println((applicationContext.getBean("test01DataSource")).hashCode());
  System.out.println((applicationContext.getBean("test02DataSource")).hashCode());
}

結果樣例:

1105282397
1105282397
793657559

1.2使用類注解進行注入對象. @Service, @Component,添加value值進行創建別名.

// 創建接口
public interface IBeanService {
  public void printInfo();
}
//創建實例01, 并且添加上@Primary注解, 表名默認使用這個類
@Service(value = "bean01")
@Primary
public class Bean01Service implements IBeanService {
  @Override
  public void printInfo() {
    System.out.println("This is bean 01");
  }
}
//創建實例02,
@Service(value = "bean02")
public class Bean02Service implements IBeanService {
  @Override
  public void printInfo() {
    System.out.println("This is bean 02");
  }
}
@RunWith(SpringRunner.class)
@SpringBootTest
public class IBeanServiceTest {
  @Autowired
  ApplicationContext applicationContext;
// create default bean.
  @Autowired
  IBeanService beanService;
  @Autowired
  @Qualifier("bean01")
  IBeanService bean01Service;
  @Autowired
  @Qualifier("bean02")
  IBeanService bean02Service;
  @Test
  public void printInfo() {
  // create bean01
    IBeanService bean01 = (IBeanService) applicationContext.getBean("bean01");
  // create bean02
    IBeanService bean02 = (IBeanService) applicationContext.getBean("bean02");
    bean01.printInfo();
    bean02.printInfo();
  // create default bean, and it is bean01
    applicationContext.getBean(IBeanService.class).printInfo();
  }
  @Test
  public void printInfoThroughAutowired() {
    beanService.printInfo();
    bean01Service.printInfo();
    bean02Service.printInfo();
  }
}

2.調用

2.1.如果需要創建局部變量,  使用applicationContext.getBean(class/name)創建

對于有@Primary的對象, 直接使用getBean(class)進行調用.

applicationContext.getBean(IBeanService.class)

對于其他的Bean, 使用getBean(name)進行調用, 并進行類型強制轉換.

eg. (IBeanService) applicationContext.getBean("bean02");

2.2.如果需要創建成員變量, 使用@Autowired和 @Qualifier("別名") 進行

對于有@Primary的對象, 直接使用@Autowired進行調用.代碼如下

@Autowired
IBeanService beanService;

對于其他的bean, 通過添加@Qualifier("別名")進行調用, 代碼如下

@Autowired
@Qualifier("bean02")
IBeanService bean02Service;

上述內容就是怎么在Spring中引入多對象,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

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

AI

呼图壁县| 岑溪市| 定安县| 湖南省| 富宁县| 安仁县| 来凤县| 海盐县| 德惠市| 聂拉木县| 阿拉尔市| 十堰市| 抚宁县| 茶陵县| 兴文县| 高尔夫| 突泉县| 吉首市| 古田县| 白玉县| 隆安县| 平顶山市| 宜宾市| 南丹县| 新化县| 韶山市| 内乡县| 漳浦县| 普陀区| 伊宁市| 西畴县| 崇义县| 离岛区| 武鸣县| 东乌| 山东省| 洪雅县| 大埔区| 牙克石市| 宕昌县| 容城县|