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

Spring 常用註解速查表:核心、Web、資料層全覆蓋

     編輯:Java 程式設計入門

前言

Spring 註解驅動開發已成主流。本文整理最實用的註解分類速查,涵蓋元件掃描、Bean 定義、注入、生命週期、AOP、事務、異步等核心場景,附關鍵屬性說明,適合開發時快速查閱。

一、啟用註解掃描

<context:component-scan base-package="com.example"/>
<!-- 或 Java Config -->
@ComponentScan("com.example")

base-package 指定掃描根套件,遞迴掃描子套件。

二、元件刻板印象註解

註解層級語意特殊功能
@Component通用泛型元件,無法歸類時使用—
@Repository資料存取層 (DAO)資料庫操作元件自動轉換 JDBC 例外為 Spring DataAccessException
@Service業務邏輯層業務服務元件標示交易邊界建議位置
@Controller表現層 (Spring MVC)控制器配合 @RequestMapping 處理 HTTP 請求
@RestControllerREST API@Controller + @ResponseBody直接回傳 JSON/XML,不解析視圖

三、Bean 定義與作用域

註解用途關鍵屬性/說明
@Configuration標示配置類別類別內 @Bean 方法定義 Bean
@Bean方法上宣告 Beanname, initMethod, destroyMethod
@Scope指定作用域singleton(預設)、prototype、request、session、application
@Lazy延遲初始化@Lazy(true) 僅在首次注入時建立
@Primary自動裝配首選多個同型 Bean 時優先注入此 Bean
@DependsOn強制初始化順序@DependsOn("otherBean") 確保 otherBean 先初始化

四、依賴注入註解

註解裝配規則適用位置備註
@AutowiredbyType → byName (配合 @Qualifier)建構子、Setter、欄位required=false 可選注入
@Qualifier("beanName")指定 Bean 名稱配合 @Autowired解決多實例衝突
@ResourcebyName → byType欄位、SetterJSR-250 標準,name 屬性指定
@InjectbyType建構子、欄位、方法JSR-330 標準,無 required 屬性
@Value("${prop}")注入屬性值欄位、參數支援 SpEL: #{systemProperties['os.name']}

五、生命週期回調

@PostConstruct  // 初始化後執行(相當於 init-method)
@PreDestroy     // 銷毀前執行(相當於 destroy-method)

方法簽名:void methodName(),不可有參數、不可拋受檢例外。

六、AOP 與事務

註解說明
@EnableAspectJAutoProxy啟用 @AspectJ 自動代理
@Aspect標示切面類別
@Pointcut定義切入點運算式
@Before/@After/@Around通知類型
@Transactional宣告式事務:類別/方法上
@EnableTransactionManagement啟用註解驅動事務

@Transactional 關鍵屬性:propagation(傳播行為)、isolation(隔離級別)、timeout、readOnly、rollbackFor。

七、異步與排程

@EnableAsync           // 啟用非同步支援
@Async("taskExecutor") // 方法標示非同步執行,可指定執行緒池 Bean 名稱

@EnableScheduling      // 啟用排程
@Scheduled(cron="0 0 12 * * ?") // 方法定時執行

需配置 ThreadPoolTaskExecutor Bean 名為 taskExecutor。

八、條件裝配與設定檔

註解用途
@Profile("dev")僅在指定環境啟用 Bean
@ConditionalOnClass類別路徑存在時才裝配
@ConditionalOnMissingBean無同型 Bean 時才裝配
@PropertySource("classpath:app.properties")載入外部屬性檔
@ConfigurationProperties(prefix="app")將屬性綁定至 POJO

九、Web 專用(Spring MVC / WebFlux)

@RequestMapping("/api")     // 類別/方法層級路徑映射
@GetMapping("/users")       // 組合註解:@RequestMapping(method=GET)
@PostMapping("/users")
@PathVariable Long id       // 路徑變數綁定
@RequestParam String name   // 查詢參數綁定
@RequestBody UserDTO dto    // JSON 請求體綁定
@ResponseBody               // 直接寫入 HTTP Response Body
@RestController             // @Controller + @ResponseBody
@ControllerAdvice           // 全域例外處理、資料綁定
@ExceptionHandler(Exception.class)

十、測試註解

@SpringBootTest           // 整合測試啟動完整上下文
@MockBean                 // 替換為 Mockito Mock
@AutoConfigureMockMvc     // 自動配置 MockMvc
@Test
@Transactional            // 測試結束自動回滾

總結

熟練掌握上述註解可大幅提升 Spring 開發效率。建議:

  1. 優先使用建構子注入(不可變、易測試)。
  2. 善用 @Primary/@Qualifier 解決多實例歧義。
  3. 事務邊界盡量加在 Service 方法,避免 Controller 加事務。
  4. 條件裝配實現多環境差異化配置。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved