java常用註解說明

lombok提供的註解:

@Data : 註解在類上, 爲類提供讀寫屬性, 此外還提供了 equals()、hashCode()、toString() 方法

@Qualifier 一般註解在service引用上,有多個service類實現同一接口(代理類),通過這個標示,表明了哪個實現類纔是我們所需要的,@Qualifier的參數名稱必須爲我們之前定義@Service註解的名稱一致。

@NonNull : 註解在參數上, 如果該類參數爲 null , 就會報出異常,  throw new NullPointException(參數名)

@Cleanup : 註釋在引用變量前, 自動回收資源 默認調用 close() 方法

@Getter/@Setter : 註解在類上, 爲類提供讀寫屬性

@Getter(lazy=true) :

@ToString : 註解在類上, 爲類提供 toString() 方法

@EqualsAndHashCode : 註解在類上, 爲類提供 equals() 和 hashCode() 方法

@NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor : 註解在類上, 爲類提供無參,有指定必須參數, 全參構造函數

@Synchronized : 註解在方法上, 爲方法提供同步鎖

@Log :

@Log4j : 註解在類上, 爲類提供一個屬性名爲 log 的 log4j 的日誌對象

@Slf4j : 註解在類上, 爲類提供一個屬性名爲 log 的 log4j 的日誌對象

lombok官網:https://projectlombok.org/features/all

注意事項:使用lombok必須安裝lombok插件,引入lombok包

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 爲屬性注入值(屬性上)

支持如下方式的注入:

》注入普通字符

》注入操作系統屬性

》注入表達式結果

》注入其它bean屬性

》注入文件資源

》注入網站資源

》注入配置文件

注入配置使用方法:

① 編寫配置文件(test.properties)

book.name=《三體》

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

③ 還需配置一個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的支持

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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章