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

Spring 常用註解完整速查表與最佳實踐指南

     編輯:Java 相關知識

啟用註解掃描

在 Spring 配置文件中啟用組件掃描,指定基礎包路徑(包含子包):

<context:component-scan base-package="cn.test"/>

核心組件註解

註解用途說明
@Configuration配置類標識該類為 Spring 配置類,內部 @Bean 方法定義的 Bean 將註冊到容器
@Component通用組件泛指組件,當難以歸類時使用
@Service業務層標識業務邏輯層組件,語義化分層
@Repository數據訪問層標識 DAO 組件,自動進行異常轉換
@Controller控制層標識控制層組件(如 Spring MVC Controller)

作用域與生命周期

註解作用示例
@Scope指定 Bean 作用域@Scope("prototype")、@Scope("request")
@Lazy(true)延遲初始化單例 Bean 默認啟動時創建,加此註解延遲到首次使用
@PostConstruct初始化回調Bean 創建並依賴注入完成後調用
@PreDestroy銷毀回調容器關閉前調用,釋放資源
@DependsOn依賴順序強制指定其他 Bean 先初始化/銷毀
@Primary首選 Bean多個候選 Bean 時作為默認注入目標

依賴注入註解

@Autowired(按類型注入)

@Autowired
private UserService userService;

// 多實例時結合 @Qualifier 按名稱注入
@Autowired
@Qualifier("userServiceImpl")
private UserService userService;

@Resource(按名稱注入)

// 默認按字段名匹配 Bean 名稱
@Resource
private UserService userService;

// 顯式指定名稱
@Resource(name = "userServiceImpl")
private UserService userService;

區別:@Autowired 默認 byType,@Resource 默認 byName;@Resource 是 JSR-250 標準,@Autowired 是 Spring 專有。

條件裝配與配置

註解用途
@Conditional條件裝配,滿足條件才註冊 Bean
@Profile環境隔離,如 dev/test/prod
@PropertySource載入外部屬性文件
@Value注入配置屬性值,支持 SpEL

異步與調度

@Async 異步方法調用

@Async
public CompletableFuture doAsyncTask() {
    // 異步執行邏輯
    return CompletableFuture.completedFuture("result");
}

需配置線程池並啟用異步支持:

<bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
    <property name="corePoolSize" value="10"/>
    <property name="maxPoolSize" value="300"/>
</bean>
<task:annotation-driven/>

@Scheduled 定時任務

@Scheduled(cron = "0 0 2 * * ?")  // 每天凌晨 2 點
public void dailyCleanup() { ... }

@Scheduled(fixedRate = 5000)  // 每 5 秒執行一次
public void periodicCheck() { ... }

Spring MVC 專用註解

註解用途
@RequestMapping請求映射(類/方法級)
@GetMapping/@PostMappingHTTP 方法縮寫映射
@RequestParam綁定請求參數
@PathVariable綁定路徑變量
@RequestBody綁定請求體(JSON/XML)
@ResponseBody響應體直接寫入
@RestController@Controller + @ResponseBody
@ExceptionHandler異常處理方法
@ModelAttribute模型屬性綁定

事務管理註解

@Transactional(
    propagation = Propagation.REQUIRED,
    isolation = Isolation.READ_COMMITTED,
    readOnly = false,
    timeout = 30,
    rollbackFor = {Exception.class}
)
public void businessMethod() { ... }

最佳實踐建議

  1. 分層語義化:嚴格使用 @Controller/@Service/@Repository,便於 AOP 切點定義
  2. 構造器注入優先:不可變依賴、易於測試、避免循環依賴
  3. 避免字段注入:@Autowired private Foo foo; 難以測試且隱藏依賴
  4. 合理使用 @Primary/@Qualifier:解決多實例歧義
  5. 配置外部化:@Value + @PropertySource 或 Spring Boot application.yml
  6. 啟用註解處理:確保 <context:annotation-config/> 或 Spring Boot 自動配置生效

總結

Spring 註解極大簡化了配置複雜度,掌握核心註解的用法、組合規則與最佳實踐,能顯著提升開發效率與代碼可維護性。建議收藏本速查表,實戰中按需查閱。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved