歡迎查看Java開發之上帝之眼系列教程,如果您正在為Java后端龐大的體系所困擾,如果您正在為各種繁出不窮的技術和各種框架所迷茫,那么本系列文章將帶您窺探Java龐大的體系。本系列教程希望您能站在上帝的角度去觀察(了解)Java體系。使Java的各種后端技術在你心中模塊化;讓你在工作中能將Java各個技術了然於心;能夠即插即用。本章我們來一起了解Spring專欄—SpringBean裝配。
本章我們一起來探討SpringBean的裝配,所謂 ”裝配“ 就是值將Bean安裝Bean容器中並進行依賴關系配置,稍微提一下IOC控制反轉就是指的安裝這一過程中,而DI依賴指的是配置這一過程。本章我們就Spring應用中如何進行裝配Bean進行講解;如自動化裝配,Java配置裝配,XML配置裝配方式進行介紹,但本章並不會介紹Spring項目全局配置方案,我們會在下一章中單獨介紹Spring基於Java的全局配置和基於XML的全局配置的兩種方案。本章提供三個完整源碼測試,Github源碼下載地址
Spring的三種裝配機制
- 隱式的Bean發現機制和自動裝配
- 在Java中進行裝配
- 在XML中進行裝配
值得一提的是,我們在項目中應該優先實用隱式的Bean發現機制和自動裝配,其次使用在Java中進行裝配,最后再使用在XML中進行裝配。
隱式的Bean發現機制和自動裝配隱式Bean發現和自動裝配測試源碼
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(); } }
- 使用 @Bean 注解將方法返回的實例對象添加到上下文中
- 在@Bean返回的實例對象中可以通過構造器注入傳入相關依賴
@Configuration @ComponentScan("com.jimisun") public class WebConfig { @Bean public User user() { return new User(myArticle()); } @Bean public MyArticle myArticle() { return new MyArticle(); } }
基於XML的Bean裝配基於XML裝配Bean完整源碼
對於在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發現機制和Java中進行裝配進行組合
- 隱式的Bean發現機制和XML配置進行組合