Spring裝配Bean(二)
通過java程式碼裝配bean
很多場景下通過元件掃描和自動裝配實現Spring的自動化配置是更為推薦的方案,但是有時候自動化配置方案,不行,比如說將第三方的元件裝配到應用中,無法在它的類上新增@Component,@Autowire註解,此時使用
顯示裝配的方式:java 和xml兩種,後面一片文章介紹xml配置
* 建立配置類
package com.erong.service;
import org.springframework.context.annotation.Configuration;
@Configuration
public class CDPlayerConfig {
}
@Configuration註解表名這個類是一個配置類,該類應該包含在Spring應用上下文中如何建立bean的細節
宣告簡單的bean
編寫一個方法,這個方法中會去建立所需要型別的例項,然後給這個方法加上bean註解
@Bean(name="sgt")
public CompactDisc sgtPeppers(){
return new SgtPeppers();
}
@Bean註解表示返回的物件將註冊為一個Bean,並且可以通過name屬性修改生成的Bean的id,預設情況下Bean的ID是方法名
藉助JavaConfig實現注入
在JavaConfig中裝配bean的最簡單的方式就是引用建立bean的方法
@Bean
public CDPlayer cdplayer(){
return new CDPlayer(sgtPeppers());
}
這裡同樣使用@Bean註解,表明這個方法建立一個bean例項並將其註冊到Spring應用上下文中。
sgtPeppers方法上新增@Bean註解,Spring將會攔截所有對它的呼叫,並確保直接返回該方法建立的bean,而不是每次都對其進行實際的呼叫。
假如,引入了一個其他的CDPlayer bean,它和之前那個bean完全一樣。
@Bean
public CDPlayer cdplayer(){
return new CDPlayer(sgtPeppers());
}
@Bean
public CDPlayer anotherCDPlayer(){
return new CDPlayer(sgtPeppers());
}
預設情況下,Spring是單例的,也就是在第二次呼叫sgtPeppers方法時候,是同一個bean
另外,通過將例項作為方法引數進行注入的方式, 這種情況下是一種自動注入風格,會在Spring上下文中
找到bean,並且注入
@Bean
public CDPlayer cdplayer(CompactDisc cd){
return new CDPlayer(cd);
}
注意,@Bean註解可以採用任何java方法產生例項
測試
package com.erong.service;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes=CDPlayerConfig.class)
public class CDPlayerTest {
@Autowired
private CDPlayer cdplayer;
@Test
public void test(){
cdplayer.play();
}
}
Spring上下文需要加在的配置類設定為CDPlayerConfig,Spring上下文建立時候就自動建立bean,測試OK
相關文章
- 二、Spring裝配BeanSpringBean
- 初識Spring —— Bean的裝配(二)SpringBean
- Spring bean 裝配SpringBean
- Spring裝配Bean(四)SpringBean
- Spring裝配Bean(一)SpringBean
- Spring入門(二):自動化裝配beanSpringBean
- Spring裝配Bean(六)Bean的作用域SpringBean
- Spring IOC 一——Spring容器裝配BeanSpringBean
- 初識Spring —— Bean的裝配(一)SpringBean
- Spring裝配Bean(七) Spring的執行時注入SpringBean
- Spring-04 Bean的自動裝配SpringBean
- Spring入門(三):通過JavaConfig裝配beanSpringJavaBean
- bean 的自動裝配Bean
- SpringBoot(14)—註解裝配BeanSpring BootBean
- spring裝配Spring
- Spring 框架基礎(02):Bean的生命週期,作用域,裝配總結Spring框架Bean
- Bean的自動裝配及作用域Bean
- Spring學習(二)Bean 作用域SpringBean
- Spring裝配Bean(五)profile註解和解決自動注入的歧義性SpringBean
- Spring——4. Bean的載入(二)SpringBean
- Spring自動裝配BeansSpringBean
- Spring Bean的3種裝配方式SpringBean
- Spring原始碼:Bean的生命週期(二)Spring原始碼Bean
- Spring原始碼之Bean的載入(二)Spring原始碼Bean
- [Spring]BeanSpringBean
- Spring Boot 自動裝配原理Spring Boot
- Spring Framework 條件裝配 之 @ConditionalSpringFramework
- 2、spring注入及自動裝配Spring
- Spring Bean容器SpringBean
- 【Spring】Bean管理SpringBean
- Spring原始碼系列(二)--bean元件的原始碼分析Spring原始碼Bean元件
- SpringBoot自動裝配原理之Configuration以及@Bean註解的使用Spring BootBean
- Spring Bean 綜述SpringBean
- Spring Bean作用域SpringBean
- spring boot factory beanSpring BootBean
- 淺談Spring BeanSpringBean
- Spring基礎(Bean)SpringBean
- Spring Bean 詳解SpringBean