1. 程式人生 > >Spring框架裝配Bean的三種方式

Spring框架裝配Bean的三種方式

歡迎檢視Java開發之上帝之眼系列教程,如果您正在為Java後端龐大的體系所困擾,如果您正在為各種繁出不窮的技術和各種框架所迷茫,那麼本系列文章將帶您窺探Java龐大的體系。本系列教程希望您能站在上帝的角度去觀察(瞭解)Java體系。使Java的各種後端技術在你心中模組化;讓你在工作中能將Java各個技術瞭然於心;能夠即插即用。本章我們來一起了解Spring專欄—SpringBean裝配。

本章我們一起來探討SpringBean的裝配,所謂 裝配“ 就是值將Bean安裝Bean容器中並進行依賴關係配置,稍微提一下IOC控制反轉就是指的安裝這一過程中,而DI依賴指的是配置這一過程。本章我們就Spring應用中如何進行裝配Bean進行講解;如自動化裝配

Java配置裝配XML配置裝配方式進行介紹,但本章並不會介紹Spring專案全域性配置方案,我們會在下一章中單獨介紹Spring基於Java的全域性配置和基於XML的全域性配置的兩種方案。本章提供三個完整原始碼測試,Github原始碼下載地址

Spring的三種裝配機制

  1. 隱式的Bean發現機制和自動裝配
  2. 在Java中進行裝配
  3. 在XML中進行裝配

值得一提的是,我們在專案中應該優先實用隱式的Bean發現機制和自動裝配其次使用在Java中進行裝配最後再使用在XML中進行裝配

Spring從兩個角度來實現自動化裝配;元件掃描(Spring自動發現應用中上下文所需要的建立的Bean),自動裝配(Spring自動滿足Bean之間的依賴)

  • 使用@Component將普通Java類配置成SpringBean
  • 使用@Autowired(自動裝配)使Spring滿足Bean的依賴
  • 配置元件掃描包(元件掃描)
    • 在Java類中配置元件掃描

@ComponentScan("com.jimisun.controller")

    • 在XML配置檔案配置元件掃描

<context:component-scan base-package="com.jimisun.controller,com.jimisun.service"/>

@Component
public class User {

    @Autowired
    
private Article article; public void action() { article.action(); } }
注意:示例中使@Component將Java類宣告成SpringBean,除了這一註解你還可以使用@Controller,@Service,@Repository等註解... 同樣@Autowired也可使用其他註解來代替,這裡為了簡明介紹不再陳述。 基於Java的Bean裝配

同樣我們可以再Spring的Java配置類中對SpringBean進行配置

  • 使用 @Bean 註解將方法返回的例項物件新增到上下文中
  • @Bean返回的例項物件中可以通過構造器注入傳入相關依賴
@Configuration
@ComponentScan("com.jimisun")
public class WebConfig {

    @Bean
    public User user() {
        return new User(myArticle());
    }

    @Bean
    public MyArticle myArticle() {
        return new MyArticle();
    }

}
注意:如果你沒有接觸過基於java配置Bean的裝配的話,不需要著急,這裡只需要你理解SpringBean裝配的全域性資訊,下章我們會更為詳細的介紹。 對於在XML中進行配置可能使我們經常使用的,在以前的Spring版本中幾乎我們都是使用XML進行配置Spring,下面我們簡單來看一下。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">

    <bean class="com.jimisun.spring.example.User" id="user">
        <constructor-arg ref="myArticle"/>
    </bean>

    <bean class="com.jimisun.spring.example.MyArticle" id="myArticle"></bean>

</beans>
注意:在實際應用中如何不想被海量的<bean>標籤埋沒前,你應當優先使用隱式的Bean發現機制和自動裝配和在Java中進行裝配,最後再選擇使用在XML中配置。 最後值得一提的是在實際專案中我們通常都會選擇組合使用
  • 隱式的Bean發現機制和Java中進行裝配進行組合
  • 隱式的Bean發現機制和XML配置進行組合
這樣便於我們更方便的配置Spring專案,下一章我們會針對全域性的Spring專案的配置進行介紹。

Java開發之上帝之眼系列教程其他文章

勘誤&感謝

  本系列文章資料來源很多出自於網際網路和在下本身的見解,受限於個人技術能力水平和其他相關知識的限制,相關見解錯誤或者資料引用錯誤請各位幫助留言校正!引用資料多來自於網際網路,在下在引用前會遵循各位前輩或者博主的引用說明表示感謝,但網際網路資料多是轉發再轉發或存在遺漏請原作者內信聯絡指正。