天天看點

Spring常用注解大全,收藏一波!!!Spring部分SpringMVC部分

Spring部分

1、聲明bean的注解

@Component 元件,沒有明确的角色

@Service 在業務邏輯層使用(service層)

@Repository 在資料通路層使用(dao層)

@Controller 在展現層使用,控制器的聲明(C)

2、注入bean的注解

@Autowired:由Spring提供

@Inject:由JSR-330提供

@Resource:由JSR-250提供

都可以注解在set方法和屬性上,推薦注解在屬性上(一目了然,少寫代碼)。

3、java配置類相關注解

@Configuration 聲明目前類為配置類,相當于xml形式的Spring配置(類上)

@Bean 注解在方法上,聲明目前方法的傳回值為一個bean,替代xml中的方式(方法上)

@Configuration 聲明目前類為配置類,其中内部組合了@Component注解,表明這個類是一個bean(類上)

@ComponentScan 用于對Component進行掃描,相當于xml中的(類上)

@WishlyConfiguration 為@Configuration與@ComponentScan的組合注解,可以替代這兩個注解

4、切面(AOP)相關注解

Spring支援AspectJ的注解式切面程式設計。

@Aspect 聲明一個切面(類上)

使用@After、@Before、@Around定義建言(advice),可直接将攔截規則(切點)作為參數。

@After 在方法執行之後執行(方法上)

@Before 在方法執行之前執行(方法上)

@Around 在方法執行之前與之後執行(方法上)

@PointCut 聲明切點

在java配置類中使用@EnableAspectJAutoProxy注解開啟Spring對AspectJ代理的支援(類上)

5、@Bean的屬性支援

@Scope 設定Spring容器如何建立Bean執行個體(方法上,得有@Bean)

其設定類型包括:

Singleton (單例,一個Spring容器中隻有一個bean執行個體,預設模式),

Protetype (每次調用建立一個bean),

Request (web項目中,給每個http request建立一個bean),

Session (web項目中,給每個http session建立一個bean),

GlobalSession(給每一個 global http session建立一個Bean執行個體)

@StepScope 在Spring Batch中還有涉及

@PostConstruct 由JSR-250提供,在構造函數執行完之後執行,等價于xml配置檔案中bean的initMethod

@PreDestory 由JSR-250提供,在Bean銷毀之前執行,等價于xml配置檔案中bean的destroyMethod

6、@Value注解

@Value 為屬性注入值(屬性上)

支援如下方式的注入:

》注入普通字元

Spring常用注解大全,收藏一波!!!Spring部分SpringMVC部分

》注入作業系統屬性

Spring常用注解大全,收藏一波!!!Spring部分SpringMVC部分

》注入表達式結果

Spring常用注解大全,收藏一波!!!Spring部分SpringMVC部分

》注入其它bean屬性

Spring常用注解大全,收藏一波!!!Spring部分SpringMVC部分

》注入檔案資源

Spring常用注解大全,收藏一波!!!Spring部分SpringMVC部分

》注入網站資源

Spring常用注解大全,收藏一波!!!Spring部分SpringMVC部分

》注入配置檔案

Spring常用注解大全,收藏一波!!!Spring部分SpringMVC部分

注入配置使用方法:

① 編寫配置檔案(test.properties)

book.name=《三體》

② @PropertySource 加載配置檔案(類上)

Spring常用注解大全,收藏一波!!!Spring部分SpringMVC部分

③ 還需配置一個PropertySourcesPlaceholderConfigurer的bean。

7、環境切換

@Profile 通過設定Environment的ActiveProfiles來設定目前context需要使用的配置環境。(類或方法上)

@Conditional Spring4中可以使用此注解定義條件話的bean,通過實作Condition接口,并重寫matches方法,進而決定該bean是否被執行個體化。(方法上)

8、異步相關

@EnableAsync 配置類中,通過此注解開啟對異步任務的支援,叙事性AsyncConfigurer接口(類上)

@Async 在實際執行的bean方法使用該注解來申明其是一個異步任務(方法上或類上所有的方法都将異步,需要@EnableAsync開啟異步任務)

9、定時任務相關

@EnableScheduling 在配置類上使用,開啟計劃任務的支援(類上)

@Scheduled 來申明這是一個任務,包括cron,fixDelay,fixRate等類型(方法上,需先開啟計劃任務的支援)

10、@Enable*注解說明

這些注解主要用來開啟對xxx的支援。

@EnableAspectJAutoProxy 開啟對AspectJ自動代理的支援

@EnableAsync 開啟異步方法的支援

@EnableScheduling 開啟計劃任務的支援

@EnableWebMvc 開啟Web MVC的配置支援

@EnableConfigurationProperties 開啟對@ConfigurationProperties注解配置Bean的支援

@EnableJpaRepositories 開啟對SpringData JPA Repository的支援

@EnableTransactionManagement 開啟注解式事務的支援

@EnableCaching 開啟注解式的緩存支援

11、測試相關注解

@RunWith 運作器,Spring中通常用于對JUnit的支援

Spring常用注解大全,收藏一波!!!Spring部分SpringMVC部分

@ContextConfiguration 用來加載配置ApplicationContext,其中classes屬性用來加載配置類

Spring常用注解大全,收藏一波!!!Spring部分SpringMVC部分

SpringMVC部分

@EnableWebMvc 在配置類中開啟Web MVC的配置支援,如一些ViewResolver或者MessageConverter等,若無此句,重寫WebMvcConfigurerAdapter方法(用于對SpringMVC的配置)。

@Controller 聲明該類為SpringMVC中的Controller

@RequestMapping 用于映射Web請求,包括通路路徑和參數(類或方法上)

@ResponseBody 支援将傳回值放在response内,而不是一個頁面,通常使用者傳回json資料(傳回值旁或方法上)

@RequestBody 允許request的參數在request體中,而不是在直接連接配接在位址後面。(放在參數前)

@PathVariable 用于接收路徑參數,比如@RequestMapping(“/hello/{name}”)申明的路徑,将注解放在參數中前,即可擷取該值,通常作為Restful的接口實作方法。

@RestController 該注解為一個組合注解,相當于@Controller和@ResponseBody的組合,注解在類上,意味着,該Controller的所有方法都預設加上了@ResponseBody。

@ControllerAdvice 通過該注解,我們可以将對于控制器的全局配置放置在同一個位置,注解了@Controller的類的方法可使用@ExceptionHandler、@InitBinder、@ModelAttribute注解到方法上,

這對所有注解了 @RequestMapping的控制器内的方法有效。

@ExceptionHandler 用于全局處理控制器裡的異常

@InitBinder 用來設定WebDataBinder,WebDataBinder用來自動綁定前台請求參數到Model中。

@ModelAttribute 本來的作用是綁定鍵值對到Model裡,在@ControllerAdvice中是讓全局的@RequestMapping都能獲得在此處設定的鍵值對。

歡迎大家一起交流,喜歡文章記得點個贊喲,感謝支援!