Spring註解大全

註解自己沒有功能的,就和xml同樣。註解和xml都是一種元數據,元數據即解釋數據的數據,這就是所謂配置。java

本文主要羅列Spring|SpringMVC相關注解的簡介。web

Spring部分
1.聲明bean的註解編程

  @Component 組件,沒有明確的角色json

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

  @Repository 在數據訪問層使用(dao層)session

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

2.注入bean的註解dom

  @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 爲屬性注入值(屬性上)
  支持以下方式的注入:
  》注入普通字符

@Value("Michael Jackson")
String name;

  》注入操做系統屬性

@Value("#{systemProperties['os.name']}")
String osName;

  》注入表達式結果

@Value("#{ T(java.lang.Math).random() * 100 }")
String randomNumber;

  》注入其它bean屬性

@Value("#{domeClass.name}")
String name;

  》注入文件資源

@Value("classpath:com/hgs/hello/test.txt")
String Resource file;

  》注入網站資源

@Value("http://www.cznovel.com")
Resource url;

  》注入配置文件

@Value("${book.name}")
String bookName;

  注入配置使用方法:
  ① 編寫配置文件(test.properties)

book.name=《三體》

  ② @PropertySource 加載配置文件(類上)

@PropertySource("classpath:com/hgs/hello/test/test.propertie")

  ③ 還需配置一個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 開啓註解式事務的支持

  @EnableTransactionManagement 開啓註解式事務的支持

  @EnableCaching 開啓註解式的緩存支持

11.測試相關注解

  @RunWith 運行器,Spring中一般用於對JUnit的支持

@RunWith(SpringJUnit4ClassRunner.class)

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

@ContextConfiguration(classes={TestConfig.class})

  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都能得到在此處設置的鍵值對。

相關文章
相關標籤/搜索