日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

Java 必须掌握的 12 种 Spring 常用注解

發(fā)布時(shí)間:2023/12/3 64 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java 必须掌握的 12 种 Spring 常用注解 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

轉(zhuǎn)載自??Java 必須掌握的 12 種 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)前方法的返回值為一個(gè)bean,替代xml中的方式(方法上)

@Configuration 聲明當(dāng)前類為配置類,其中內(nèi)部組合了@Component注解,表明這個(gè)類是一個(gè)bean(類上)

@ComponentScan 用于對(duì)Component進(jìn)行掃描,相當(dāng)于xml中的(類上)

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

4.切面(AOP)相關(guān)注解

Spring支持AspectJ的注解式切面編程。

@Aspect 聲明一個(gè)切面(類上)?
使用@After、@Before、@Around定義建言(advice),可直接將攔截規(guī)則(切點(diǎn))作為參數(shù)。

@After 在方法執(zhí)行之后執(zhí)行(方法上)?
@Before 在方法執(zhí)行之前執(zhí)行(方法上)?
@Around 在方法執(zhí)行之前與之后執(zhí)行(方法上)

@PointCut 聲明切點(diǎn)?
在java配置類中使用@EnableAspectJAutoProxy注解開啟Spring對(duì)AspectJ代理的支持(類上)

5.@Bean的屬性支持

@Scope 設(shè)置Spring容器如何新建Bean實(shí)例(方法上,得有@Bean)?
其設(shè)置類型包括:

Singleton (單例,一個(gè)Spring容器中只有一個(gè)bean實(shí)例,默認(rèn)模式),?
Protetype (每次調(diào)用新建一個(gè)bean),?
Request (web項(xiàng)目中,給每個(gè)http request新建一個(gè)bean),?
Session (web項(xiàng)目中,給每個(gè)http session新建一個(gè)bean),?
GlobalSession(給每一個(gè) global http session新建一個(gè)Bean實(shí)例)

@StepScope 在Spring Batch中還有涉及

@PostConstruct 由JSR-250提供,在構(gòu)造函數(shù)執(zhí)行完之后執(zhí)行,等價(jià)于xml配置文件中bean的initMethod

@PreDestory 由JSR-250提供,在Bean銷毀之前執(zhí)行,等價(jià)于xml配置文件中bean的destroyMethod

6.@Value注解

@Value 為屬性注入值(屬性上)?
支持如下方式的注入:?
》注入普通字符

@Value("Michael Jackson")String?name;

》注入操作系統(tǒng)屬性

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

》注入表達(dá)式結(jié)果

@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;

》注入網(wǎng)站資源

@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")

③ 還需配置一個(gè)PropertySourcesPlaceholderConfigurer的bean。

7.環(huán)境切換

@Profile 通過設(shè)定Environment的ActiveProfiles來設(shè)定當(dāng)前context需要使用的配置環(huán)境。(類或方法上)

@Conditional Spring4中可以使用此注解定義條件話的bean,通過實(shí)現(xiàn)Condition接口,并重寫matches方法,從而決定該bean是否被實(shí)例化。(方法上)

8.異步相關(guān)

@EnableAsync 配置類中,通過此注解開啟對(duì)異步任務(wù)的支持,敘事性AsyncConfigurer接口(類上),點(diǎn)擊這里了解使用詳情。

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

9.定時(shí)任務(wù)相關(guān)

@EnableScheduling 在配置類上使用,開啟計(jì)劃任務(wù)的支持(類上)

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

10.@Enable*注解說明

這些注解主要用來開啟對(duì)xxx的支持。?
@EnableAspectJAutoProxy 開啟對(duì)AspectJ自動(dòng)代理的支持

@EnableAsync 開啟異步方法的支持

@EnableScheduling 開啟計(jì)劃任務(wù)的支持

@EnableWebMvc 開啟Web MVC的配置支持

@EnableConfigurationProperties 開啟對(duì)@ConfigurationProperties注解配置Bean的支持

@EnableJpaRepositories 開啟對(duì)SpringData JPA Repository的支持

@EnableTransactionManagement 開啟注解式事務(wù)的支持

@EnableTransactionManagement 開啟注解式事務(wù)的支持

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

11.測(cè)試相關(guān)注解

@RunWith 運(yùn)行器,Spring中通常用于對(duì)JUnit的支持

@RunWith(SpringJUnit4ClassRunner.class)

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

@ContextConfiguration(classes={TestConfig.class})

12.SpringMVC相關(guān)注解

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

@Controller 聲明該類為SpringMVC中的Controller

@RequestMapping 用于映射Web請(qǐng)求,包括訪問路徑和參數(shù)(類或方法上)

@ResponseBody 支持將返回值放在response內(nèi),而不是一個(gè)頁(yè)面,通常用戶返回json數(shù)據(jù)(返回值旁或方法上)

@RequestBody 允許request的參數(shù)在request體中,而不是在直接連接在地址后面。(放在參數(shù)前)

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

@RestController 該注解為一個(gè)組合注解,相當(dāng)于@Controller和@ResponseBody的組合,注解在類上,意味著,該Controller的所有方法都默認(rèn)加上了@ResponseBody。

@ControllerAdvice 通過該注解,我們可以將對(duì)于控制器的全局配置放置在同一個(gè)位置,注解了@Controller的類的方法可使用@ExceptionHandler、@InitBinder、@ModelAttribute注解到方法上,?
這對(duì)所有注解了 @RequestMapping的控制器內(nèi)的方法有效。

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

@InitBinder 用來設(shè)置WebDataBinder,WebDataBinder用來自動(dòng)綁定前臺(tái)請(qǐng)求參數(shù)到Model中。

@ModelAttribute 本來的作用是綁定鍵值對(duì)到Model里,在@ControllerAdvice中是讓全局的@RequestMapping都能獲得在此處設(shè)置的鍵值對(duì)。

?

總結(jié)

以上是生活随笔為你收集整理的Java 必须掌握的 12 种 Spring 常用注解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。