Java必須掌握的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 為屬性注入值(屬性上)
支援如下方式的注入:
》注入普通字元
@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.javastack.cn”)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})
12.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都能獲得在此處設定的鍵值對。
相關文章
- Java程式設計師必須掌握的5個註解!Java程式設計師
- Java經典常用類總結(必須掌握!)Java
- Java Annotation 必須掌握的特性Java
- 【5】進大廠必須掌握的面試題-Java面試-spring面試題JavaSpring
- Java程式設計師必須掌握的Spring依賴管理原理Java程式設計師Spring
- 為什麼說 Java 程式設計師必須掌握 Spring Boot ?Java程式設計師Spring Boot
- 3.3 Java 中必須瞭解的常用類(常用工具類)Java
- Git中~你必須掌握的!Git
- Spring Cloud 微服務實戰——Java開發人員必須掌握的技術SpringCloud微服務Java
- Java開發必須掌握的線上問題排查命令Java
- Java 程式設計師必須掌握的 Linux 命令Java程式設計師Linux
- Spring常用註解Spring
- # 3分鐘短文:Laravel路由註冊,你必須掌握的“動詞”!Laravel路由
- 為什麼說 Java 程式設計師到了必須掌握 Spring Boot 的時候?Java程式設計師Spring Boot
- Spring MVC常用的註解SpringMVC
- CSS中那些必須掌握的概念CSS
- 前端必須掌握的知識點前端
- java開發必須要掌握的20個核心技術Java
- JVM-Java工程師必須掌握的知識點JVMJava工程師
- 【4】進大廠必須掌握的面試題-Java面試-jdbc面試題JavaJDBC
- Java程式設計師面試必須要掌握的面試題Java程式設計師面試題
- Java程式設計師必須掌握的7個Java效能指標!Java程式設計師指標
- 你必須瞭解Spring的生態Spring
- Java註解在Android中必須學習的細節知識JavaAndroid
- spring 框架常用註解Spring框架
- 淺解前端必須掌握的演算法(四):希爾排序前端演算法排序
- Spring MVC 常用註解的使用SpringMVC
- 學習Linux必須掌握的命令!Linux
- 必須掌握的10個Linux命令!Linux
- git 必須要熟練掌握的命令Git
- Java必知必會之註解Java
- 淺解前端必須掌握的演算法(五):堆排序(下)前端演算法排序
- 淺解前端必須掌握的演算法(一):氣泡排序前端演算法排序
- 淺解前端必須掌握的演算法(五):堆排序(上)前端演算法排序
- 好程式設計師分享SpringBoot須掌握的註解程式設計師Spring Boot
- 【Linux常用命令①】程式設計師必須掌握的Linux命令Linux程式設計師
- spring boot的常用註解有哪些?Spring Boot
- 必須掌握的Linux使用者組Linux