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

Spring 註解替代 XML 配置:@Component 及掃描機制詳解

     編輯:程式設計綜合問答

問題核心

想用註解替換 XML 中的 `` 配置,嘗試 `@Controller` 無效。

正確註解選擇

Spring 提供四大核心註解,按語義分層:

註解用途語義層級
@Component通用組件,無特定業務含義基礎
@Repository數據訪問層(DAO)持久層
@Service業務邏輯層服務層
@Controller控制層(Spring MVC)表現層

對於 `ContentDao`,應使用 @Repository:

@Repository("contentDao")
public class ContentDao { }

關鍵:啟用組件掃描

僅加註解不夠,必須在 XML 配置掃描包路徑:

<!-- applicationContext.xml -->
<context:component-scan base-package="com.itschool" />

或 Java 配置類:

@Configuration
@ComponentScan("com.itschool")
public class AppConfig { }

為什麼 @Controller 不行?

  • `@Controller` 專門用於 Spring MVC 控制器,會被 `DispatcherServlet` 識別處理 Web 請求
  • DAO 屬於持久層,語義不符,且無特殊掃描邏輯支持
  • 所有四大註解最終都繼承 `@Component`,功能上可互換,但語義化是最佳實踐

進階:自定義 Bean 名稱與作用域

@Repository("myContentDao")  // 指定 bean 名稱,默認類名首字母小寫
@Scope("prototype")          // 默認 singleton,可改為 prototype
public class ContentDao { }

總結

  1. DAO 類加 @Repository(或 @Component)
  2. 配置 component-scan 掃描對應包
  3. 語義化註解利於代碼維護和 AOP 切點定義
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved