自動裝配
- @Autowired 可以通過對象的類型來自動加載某個類
- @Qualifier 經常與@Autowired一起使用,通過具體名字來自動裝配
- @Resource 有兩個屬性:name和type,默認是按照byName注入,相當於前兩個整合
前面三個注解針對於bean類型的數據,基本類型和String類型無法實現,因此有了@value注解
- @value value屬性用於指定數據的值,可以用 ${表達式} 的寫法
三層架構注解
- @Controller 控制層 handler處理器
- @Service 服務層
- @Repository 持久層,DAO層
- @Component 在確定不了是哪一個層的時候使用
Spring會把這四個注解當作需要注入的Bean加載在上下文中
參數傳遞
- @RequestMapping 這個注解可以作用在方法上,用來指定請求路徑。
- @RequestBody 用在控制層的方法上,可以將前端傳回來的json轉換為java對象
- @ResponseBody 用在控制層方法上,可以將方法返回的Java對象轉為json數據傳到前端
這些注解作用於類上,該類的所有方法都適用。 - @RestController 用在類上,相當於@Controller+@ResponseBody
Application
- @MapperScan 用來掃描指定包內的所有mapper
- @SpringBootApplication 是 Spring Boot 最核心、最基礎的注解。
配置Bean
- @Configuration 用於定義配置類,可以替換xml配置文件。該配置可以省略,加上該注解,獲得的類對象默認為單例
- @Bean 在@Configuration注解下進行創建,在方法上使用@Bean就表明這個方法需要交給Spring進行管理
- @Scope 設置Bean的作用域。
- singleton 單例模式,bean的默認作用域,單例模式對於無會話狀態的bean(DAO、service)來說,是最理想的選擇
- prototype 原型模式,對需要保持會話狀態的bean應該使用prototype
- request 該作用域僅在當前 HTTP Request 內有效
- session 該作用域僅在當前 HTTP Session 內有效
- application bean對象的定義范圍在ServletContext生命周期內。僅僅在web-aware的上下文中有效
- websocket bean對象的定義為WebSocket的生命周期內。僅僅在web-aware的上下文中有效
- @PostConstruct 注解在方法上,表示該方法是在Spring實例化該Bean之后馬上執行此方法。一個Bean中@PostConstruct注解的方法可以有多個
- @PreDestory 容器銷毀前執行該方法
整合單元測試
不用啟動項目就可以進行測試
需要先添加junit依賴
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
@RunWith(SpringJUnit4ClassRunner.class),創建容器
@ContextConfiguration("classpath:xxx.xml"),加載配置文件
@Test,測試方法
面向切面編程-通知
@Aspect 把當前類標識為一個切面供容器進行讀取
- @before(前置通知)通知方法在目標方法調用之前執行
- @after(后置通知)通知方法在目標方法返回或異常后調用
- @after-returning(返回后通知)通知方法會在目標方法返回后調用
- @after-throwing(拋出異常通知)通知方法會在目標方法拋出異常后調用
- @around(環繞通知) 通知方法會將目標方法封裝起來
注解事務
首先要在配置文件中開啟注解事務
<tx:annotation-driven transaction-manager="transactionManager" />
@Transactional添加在接口實現類或接口實現方法上,而不是接口類中。只有public的方法才起作用
注解實現定時器
@EnableScheduling加在Application類上
@Scheduled加在需要使用定時器的方法上
借鑒 https://www.cnblogs.com/ysySelf/p/10812900.html 中有具體參數配置
別名
@Alias