扣丁學(xué)堂解析Java開發(fā)程序員必須掌握的20個Spring常用注解
2019-04-03 16:18:38
3270瀏覽
今天扣丁學(xué)堂
Java培訓(xùn)老師給大家分享一篇關(guān)于Java開發(fā)程序員必須掌握的20個Spring常用注解,首先注解本身沒有功能的,就和xml一樣。注解和xml都是一種元數(shù)據(jù),元數(shù)據(jù)即解釋數(shù)據(jù)的數(shù)據(jù),這就是所謂配置。本文主要羅列Spring|SpringMVC相關(guān)注解的簡介。
Spring部分
1、聲明bean的注解
@Component組件,沒有明確的角色
@Service在業(yè)務(wù)邏輯層使用(service層)
@Repository在數(shù)據(jù)訪問層使用(dao層)
@Controller在展現(xiàn)層使用,控制器的聲明(C)
2、注入bean的注解
@Autowired:由Spring提供
@Inject:由JSR-330提供
@Resource:由JSR-250提供
都可以注解在set方法和屬性上,推薦注解在屬性上(一目了然,少寫代碼)。
3、java配置類相關(guān)注解
@Configuration聲明當(dāng)前類為配置類,相當(dāng)于xml形式的Spring配置(類上)
@Bean注解在方法上,聲明當(dāng)前方法的返回值為一個bean,替代xml中的方式(方法上)
@Configuration聲明當(dāng)前類為配置類,其中內(nèi)部組合了@Component注解,表明這個類是一個bean(類上)
@ComponentScan用于對Component進(jìn)行掃描,相當(dāng)于xml中的(類上)
@WishlyConfiguration為@Configuration與@ComponentScan的組合注解,可以替代這兩個注解
4、切面(AOP)相關(guān)注解
Spring支持AspectJ的注解式切面編程。
@Aspect聲明一個切面(類上)
使用@After、@Before、@Around定義建言(advice),可直接將攔截規(guī)則(切點)作為參數(shù)。
@After在方法執(zhí)行之后執(zhí)行(方法上)
@Before在方法執(zhí)行之前執(zhí)行(方法上)
@Around在方法執(zhí)行之前與之后執(zhí)行(方法上)
@PointCut聲明切點
在java配置類中使用@EnableAspectJAutoProxy注解開啟Spring對AspectJ代理的支持(類上)
5、@Bean的屬性支持
@Scope設(shè)置Spring容器如何新建Bean實例(方法上,得有@Bean)
其設(shè)置類型包括:
Singleton(單例,一個Spring容器中只有一個bean實例,默認(rèn)模式),
Protetype(每次調(diào)用新建一個bean),
Request(web項目中,給每個httprequest新建一個bean),
Session(web項目中,給每個httpsession新建一個bean),
GlobalSession(給每一個globalhttpsession新建一個Bean實例)
@StepScope在SpringBatch中還有涉及
@PostConstruct由JSR-250提供,在構(gòu)造函數(shù)執(zhí)行完之后執(zhí)行,等價于xml配置文件中bean的initMethod
@PreDestory由JSR-250提供,在Bean銷毀之前執(zhí)行,等價于xml配置文件中bean的destroyMethod
6、@Value注解
@Value為屬性注入值(屬性上)
支持如下方式的注入:
》注入普通字符
》注入操作系統(tǒng)屬性
》注入表達(dá)式結(jié)果
》注入其它bean屬性
》注入文件資源
》注入網(wǎng)站資源
》注入配置文件
注入配置使用方法:
①編寫配置文件(test.properties)
book.name=《三體》
②@PropertySource加載配置文件(類上)
③還需配置一個PropertySourcesPlaceholderConfigurer的bean。
7、環(huán)境切換
@Profile通過設(shè)定Environment的ActiveProfiles來設(shè)定當(dāng)前context需要使用的配置環(huán)境。(類或方法上)
@ConditionalSpring4中可以使用此注解定義條件話的bean,通過實現(xiàn)Condition接口,并重寫matches方法,從而決定該bean是否被實例化。(方法上)
8、異步相關(guān)
@EnableAsync配置類中,通過此注解開啟對異步任務(wù)的支持,敘事性AsyncConfigurer接口(類上)
@Async在實際執(zhí)行的bean方法使用該注解來申明其是一個異步任務(wù)(方法上或類上所有的方法都將異步,需要@EnableAsync開啟異步任務(wù))
9、定時任務(wù)相關(guān)
@EnableScheduling在配置類上使用,開啟計劃任務(wù)的支持(類上)
@Scheduled來申明這是一個任務(wù),包括cron,fixDelay,fixRate等類型(方法上,需先開啟計劃任務(wù)的支持)
10、@Enable*注解說明
這些注解主要用來開啟對xxx的支持。
@EnableAspectJAutoProxy開啟對AspectJ自動代理的支持
@EnableAsync開啟異步方法的支持
@EnableScheduling開啟計劃任務(wù)的支持
@EnableWebMvc開啟WebMVC的配置支持
@EnableConfigurationProperties開啟對@ConfigurationProperties注解配置Bean的支持
@EnableJpaRepositories開啟對SpringDataJPARepository的支持
@EnableTransactionManagement開啟注解式事務(wù)的支持
@EnableTransactionManagement開啟注解式事務(wù)的支持
@EnableCaching開啟注解式的緩存支持
11、測試相關(guān)注解
@RunWith運(yùn)行器,Spring中通常用于對JUnit的支持
@ContextConfiguration用來加載配置ApplicationContext,其中classes屬性用來加載配置類
SpringMVC部分
@EnableWebMvc在配置類中開啟WebMVC的配置支持,如一些ViewResolver或者M(jìn)essageConverter等,若無此句,重寫WebMvcConfigurerAdapter方法(用于對SpringMVC的配置)。
@Controller聲明該類為SpringMVC中的Controller
@RequestMapping用于映射Web請求,包括訪問路徑和參數(shù)(類或方法上)
@ResponseBody支持將返回值放在response內(nèi),而不是一個頁面,通常用戶返回json數(shù)據(jù)(返回值旁或方法上)
@RequestBody允許request的參數(shù)在request體中,而不是在直接連接在地址后面。(放在參數(shù)前)
@PathVariable用于接收路徑參數(shù),比如@RequestMapping(“/hello/{name}”)申明的路徑,將注解放在參數(shù)中前,即可獲取該值,通常作為Restful的接口實現(xiàn)方法。
@RestController該注解為一個組合注解,相當(dāng)于@Controller和@ResponseBody的組合,注解在類上,意味著,該Controller的所有方法都默認(rèn)加上了@ResponseBody。
@ControllerAdvice通過該注解,我們可以將對于控制器的全局配置放置在同一個位置,注解了@Controller的類的方法可使用@ExceptionHandler、@InitBinder、@ModelAttribute注解到方法上,
這對所有注解了@RequestMapping的控制器內(nèi)的方法有效。
@ExceptionHandler用于全局處理控制器里的異常
@InitBinder用來設(shè)置WebDataBinder,WebDataBinder用來自動綁定前臺請求參數(shù)到Model中。
@ModelAttribute本來的作用是綁定鍵值對到Model里,在@ControllerAdvice中是讓全局的@RequestMapping都能獲得在此處設(shè)置的鍵值對。
以上就是關(guān)于扣丁學(xué)堂解析Java開發(fā)程序員必須掌握的20個Spring常用注解的介紹,
想要了解更多關(guān)于Java開發(fā)方面內(nèi)容的小伙伴,請關(guān)注扣丁學(xué)堂Java培訓(xùn)官網(wǎng)、微信等平臺,扣丁學(xué)堂IT職業(yè)在線學(xué)習(xí)教育有專業(yè)的Java講師為您指導(dǎo),此外扣丁學(xué)堂老師精心推出的Java視頻教程定能讓你快速掌握J(rèn)ava從入門到精通開發(fā)實戰(zhàn)技能。扣丁學(xué)堂Java技術(shù)交流群:670348138。
【關(guān)注微信公眾號獲取更多學(xué)習(xí)資料】 【掃碼進(jìn)入Python全棧開發(fā)免費(fèi)公開課】
查看更多關(guān)于“Java開發(fā)資訊”的相關(guān)文章>>
標(biāo)簽:
Java培訓(xùn)
Java視頻教程
Java多線程
Java面試題
Java學(xué)習(xí)視頻
Java開發(fā)