首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Spring IoC 容器實現依賴注入的四種方式:XML、註解、自動裝配、零配置全解析

     編輯:Java 綜合教學

IoC 核心思想

控制反轉(IoC):對象創建與依賴關係交給容器管理。依賴注入(DI) 是實現 IoC 的具體手段——構造器注入、Setter 注入、字段注入。

方式一:XML 顯式配置

<bean id="bookdao" class="com.demo.BookDAO"/>
<bean id="bookService" class="com.demo.BookService">
    <property name="bookDAO" ref="bookdao"/>  <!-- Setter 注入 -->
</bean>

獲取:ctx.getBean("bookService")。優點:修改無需重編譯;缺點:配置繁瑣。

方式二:註解配置

組件掃描註解

註解語義層級
@Component通用組件
@RepositoryDAO 層
@ServiceService 層
@ControllerWeb 層

配置掃描:<context:component-scan base-package="com.demo"/>

自動裝配註解

註解來源默認策略指定名稱
@AutowiredSpringbyType@Qualifier("name")
@ResourceJ2EE (JSR-250)byName@Resource(name="name")
@InjectJSR-330byType@Named("name")

@Autowired 可用於構造器、Setter、字段;@Qualifier 僅用於參數、字段。

方式三:XML 自動裝配

<bean id="bookService" class="com.demo.BookService" autowire="byType"/>
<bean id="bookService" class="com.demo.BookService" autowire="byName"/>

較少用,註解方式更靈活。

方式四:零配置(Java Config)

@Configuration
@ComponentScan("com.demo")
public class AppConfig {
    @Bean
    public User user() { return new User("config"); }
}
  • @Configuration ≡ <beans>
  • @ComponentScan ≡ <context:component-scan>
  • @Bean 方法名 ≡ id

啟動:new AnnotationConfigApplicationContext(AppConfig.class)

五種方式對比總結

方式優點缺點適用場景
XML解耦、無侵入、運行期修改冗長、易錯第三方庫、跨項目複用、運維需動態調整
註解簡潔、類型安全、IDE 支援侵入代碼、修改需重編譯自研業務代碼、主流選擇
自動裝配減少樣板代碼隱式依賴、歧義風險配合註解使用
Java Config類型安全、重構友好、程序化邏輯硬編碼、不利於運維修改Spring Boot 核心、微服務配置

最佳實踐建議

  • 業務代碼:註解 + 自動裝配(@Service/@Repository + @Autowired)
  • 第三方整合、基礎設施:Java Config(@Configuration + @Bean)
  • 需運行期動態調整:XML 或 Spring Cloud Config
  • 避免循環依賴:構造器注入強制暴露問題,Setter/字段注入隱患較大
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved