spring 註解
- Author: HuiFer
核心註解
@Required
- 在Bean的set方法上使用,表示該屬性不可爲空
@Autowired
- 自動注入Bean,方式爲ByType。使用
@Autowired(required = false)
時,即便找不到Bean也不會報錯
@Qualifier
- 該註解通常和
@Autowired
一起使用,可以當作ByName注入Bean,使用@Qualifier
可以避免相同類型不同作用Bean注入時的混亂
@Configuration
- 等價於spring.xml配置文件,該註解可以替換爲JavaBean方式進行開發,如需使用xml方式開發可以使用
@ImportResource(locations={"classpath:applicationContext.xml"})
方式.
@ComponentScan
- 指定bean掃描路徑,和
@Configuration
一起使用來發現和裝配Bean.如果不填寫basePackages
會從該註解所在包以及子包開始掃描。
@ImportResource
- 用來加載xml配置文件
@Bean
- 等價於
·
`,將註解放在方法上交給spring管理
@Lazy
- 延時加載.與
@Configuration
一起使用所有的Bean都是懶加載.
@Value
- 用於注入
application.yml
或application.properties
中配置的屬性值
@Import
- 導入其他配置類
語義註解
@Component
- 類級別,表示這是一個spring組件.
@Controller
- 類級別,定義controller,修飾url請求層組件。其本質也是
@Commponent
@RestController
- 類級別,定義controller,修飾url請求層組件。其本質也是
@Commponent
@Service
- 類級別,定義service,修飾service層組件.其本質也是
@Commponent
@Repository
- 類級別,定義repository,修飾dao層組件。其本質也是
@Commponent
MVC註解
@Controller
- controller層組件
@RestController
- controller層組件
@RequestMapping
- 表示url請求地址
- GetMapping:
@RequestMapping(method = RequestMethod.GET)
- PostMapping:
@RequestMapping(method = RequestMethod.POST)
- PutMapping:
@RequestMapping(method = RequestMethod.Put)
- PatchMapping:
@RequestMapping(method = RequestMethod.PATCH)
- DeleteMapping:
@RequestMapping(method = RequestMethod.DELETE)
- GetMapping:
@CookieValue
- 用在方法上獲取cookie
@CrossOrigin
- 跨域實現
@ExceptionHandler
- 用在方法上,指定具體異常處理類
@InitBinder
- 初始化數據綁定器,用於數據綁定,數據轉換
@Valid
- 數據驗證
@MatrixVariable
- 矩陣變量
@PathVariable
- 路徑變量
@RequestAttribute
- 綁定請求屬性到handler方法參數
@RequestBody
- 指示方法參數應該綁定到Http請求Body HttpMessageConveter負責將HTTP請求消息轉爲對象
@RequestHeader
- 映射控制器參數到請求頭的值
@RequestParam
- 請求參數
@ResponseBody
- 返回值對象註解轉換成json
@ResponseStatus
- 返回狀態碼
@SessionAttribute
- 用於方法參數。綁定方法參數到會話屬性
@SessionAttributes
- 用於將會話屬性用Bean封裝
@ModelAttribute
- 把值綁定到Model中,使全局@RequestMapping可以獲取到該值
定時任務註解
@Scheduled
- 方法級別,參數爲 cron 表達式
調度註解
@Async
- 方法級別,每個方法均都在單獨的線程中,可接受參數;可返回值,也可不返回值。
測試註解
@BootstrapWith
- 類級別,配置spring測試上下文
@ContextConfiguration
- 類級別,指定配置文件
@WebAppConfiguration
- 類級別,指定測試環境 WebAppConfiguration
@Timed
- 方法級別,指定測試方法的執行時間,超時失敗
@Repeat
- 方法級別,指定運行次數
@Commit
- 類級別&方法級別,指定事務提交
@RollBack
- 類級別&方法級別,指定事務的回滾
@DirtiesContext
@BeforeTransaction
- 方法級別,指示具有該註解的方法應該在所有
@Transactional
註解的方法之前執行
@AfterTransaction
- 方法級別,指示具有該註解的方法應該在所有
@Transactional
註解的方法之後執行
@Sql
- 類級別&方法級別,運行Sql腳本 方法上的@Sql會覆蓋類級別的@Sql
@SpringBootTest
- spring boot 集成測試上下文
@DataJpaTest
@DataMongoTest
- 內置MongoDB集成測試
@WebMVCTest
- controller層測試
@AutoConfigureMockMVC
- controller層測試,加載springboot完整上下文
@MockBean
- 注入MockBean
@JsonTest
@TestPropertySource
JPA註解
@Entity
- 實體類註解,常和
@Table
配合使用
@Table
- 表註解,
name
填寫數據庫表名
@Column
- 數據表列註解
@Id
- 主鍵註解
@GeneratedValue
- 主鍵生成策略
- TABLE:使用一個特定的數據庫表格來保存主鍵。
- SEQUENCE:根據底層數據庫的序列來生成主鍵,條件是數據庫支持序列。
- IDENTITY:主鍵由數據庫自動生成(主要是自動增長型)
- AUTO:主鍵由程序控制
@SequenceGeneretor
- 自動爲實體的數字標識字段/屬性分配值
@MappedSuperClass
- 用在確定是父類的Entity上。父類的屬性可被子類繼承
@NoRepositoryBean
- 在充當父類的Repository上註解,告訴Spring不要實例化該Repository
@Transient
- 表示該屬性並非是一個到數據庫表字段的映射,ORM框架應忽略它。 如果一個屬性並非數據庫表的字段映射,就務必將其標示爲
@Transient
,否則,ORM框架默認其註解爲@Basic
。
@Basic
- 指定實體數據屬性的加載方式
- LAZY:延遲加載
- EAGER:全部加載
@JsonIgnore
- 指示當進行序列化或反序列化時,忽略該屬性
@JoinColumn
- 一對一:本表中指向另一個表的外鍵。 一對多:另一個表指向本表的外鍵
@OneToOne
- 一對一註解
@OneToMany
- 一對多註解
@ManyToOne
- 多對一註解
事務註解
@Transactional
- 用於接口、接口中的方法、類、類中的公有方法 光靠該註解並不足以實現事務
僅是一個元數據,運行時架構會使用它配置具有事務行爲的Bean - 支持特性
- 傳播類型
- 隔離級別
- 操作超時
- 只讀標記
緩存註解
@Cacheable
- 方法級別
@CachePut
- 方法級別,更新緩存
@CacheEvict
- 方法級別,清除緩存
@CacheConfig
- 類級別,緩存配置
SpringBoot註解
@EnableAutoConfiguration
- 自動配置註解,可以將該註解配合
@Configuration
來完成配置類的自動裝配
@SpringBootApplication
- 該註解是以下三個註解的合併體
@SpringBootConfiguration
、EnableAutoConfiguration
和@ComponentScan
Spring Cloud註解
@EnableConfigServer
- 配置服務器
@EnableEurekaServer
- 服務註冊
@EnableDiscoveryClient
- 服務發現
@EnableCircuitBreaker
- 熔斷器
@HystrixCommand
- 服務降級
異常註解
@ExceptionHandler
- 捕獲異常進行處理
@ControllerAdvice
- 統一異常處理,一般與
@ExceptionHandler
一起使用
@RestControllerAdvice
- @RestControllerAdvice= @ControllerAdvice +@ResponseBody