spring的各种注解的作用-持续更新中
所謂的注入到底啥意思?
其實(shí)就是spring內(nèi)部的import
和python里面的import numpy差不多的效果.
?
依賴注入:
扯白了就是你自己寫的對象,需要被spring兼容.
?
先說說所謂的自動(dòng)裝配是啥意思?
Spring是一輛大卡車.
貨物是自定義的一堆類,
類在被裝上卡車前,需要配置(例如幾個(gè)箱子整齊疊在一起),這個(gè)也就是配置類發(fā)揮的作用,
所謂的配置類就是class的定義中帶有@Configuration的就是配置類
配置完了之后需要在spring導(dǎo)入(也就是所謂的依賴注入),也就用到了@Autowired.
由于Spring可以隨手一指(用@Autowired來注入一個(gè)瞎編的名字的bean),
并不一定非要是@Configuration所在類中,用@bean注冊過的函數(shù),
所以出來了@Primary,哪個(gè)函數(shù)被@Primary標(biāo)記過?
那么當(dāng)@SpringBootApplication所在類的@Autowired想要亂注入的時(shí)候,
哪個(gè)函數(shù)頭上有@Primary,就注入這個(gè)函數(shù).
所以,根據(jù)這個(gè)圖示,我們其實(shí)可以把一個(gè)spring實(shí)驗(yàn)分成三大類:
①配置類
②啟動(dòng)類
③貨物類
#--------------------------------------------------------------------------------------------------------
被@Bean注解的方法會被Spring重寫(重寫就是裝配的意思)
#--------------------------------------------------------------------------------------------------------
@Service和@Component有啥區(qū)別呢?
看了下@Service的源碼
package org.springframework.stereotype;import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import org.springframework.core.annotation.AliasFor;@Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Component public @interface Service {@AliasFor(annotation = Component.class)String value() default ""; }目前暫且認(rèn)為這兩個(gè)可以互相替換
| 注解 | 可替換注解 |
| @Inject | @Autowired |
| @Named | @Component |
| @Component | @Service |
?
#--------------------------------------------------------------------------------------------------------
| 注解 | 大致用法 | 作用 |
| @GetMapping | 完整用法示例 | 路由函數(shù) |
| @PathVariable | 完整用法示例 | 接收http請求中變量的值 |
| @SpringBootApplication | 完整用法示例 | 這個(gè)類中包含main |
| @RestController | 完整用法示例 | 等效於 @ResponseBody + @Controller |
| @ComponentScan? | 第4章-SpringBoot的注解/4.1/spring-ants/src/main/java/scan/ScanApp.java | 會自動(dòng)掃描 @Controller @Service @Repository @Component @Configuration ? 一般是被包含在 @SpringBootApplication中如果web應(yīng)用采用了@SpringBootConfiguration 那么此時(shí)就需要采用@ComponentScan? ? |
| @Primary | 第4章-SpringBoot的注解/4.1/spring-ants/src/main/java/primary/PrimaryConfig.java | 在配置類中有@Primary以后. main類中的注入可以隨便亂寫名字, 實(shí)際注入的以@Primary附屬的函數(shù)為準(zhǔn). |
| @Scope | @Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)每次返回不同的對象(非單態(tài)) @Scope(value = ConfigurableBeanFactory.SCOPE_SINGLETON)每次返回同一個(gè)人對象(單態(tài)) | ①非單態(tài)的bean每一次返回的是一個(gè)新的實(shí)例 則這個(gè)單態(tài)bean所維護(hù)的非單態(tài)bean實(shí)例,將不會被刷新。 |
| @Configuration | ? | ? |
| @Component | ? | ? |
| @ConfigurationProperties | ? | ? |
| @Autowired | ? | 想要在一個(gè)bean中使用另一個(gè) bean , 則可以直接在使用者一端,將被調(diào)用 者的 實(shí)例注入 |
| @WebListener | ? | ? |
| @WebServlet | ? | ? |
| @Qualifier | 4.2/ants-adv/src/main/java/qlf/ | 通過bean的類名進(jìn)行注入 |
?
還加入了 ServletComponentScan
注解,這個(gè)注解主要用于掃描源碼包中的 Serviet 組件,包括使用@Web Servlet 、@WebFilter
和@WebListener 進(jìn)行修飾的類。
?
?
?
?
?
測試類使用:
| 注解 | 作用 |
| @RunWith | ? |
| @SpringBootTest | ? |
| @AutoConfigureMockMvc | mock相關(guān)的自動(dòng)配置 |
?
?
Feign注解
| 注解 | 作用 |
| @RequestLine | 發(fā)送http請求 |
| @Param | 接收參數(shù) |
?
AOP注解
| 注解 | 作用 |
| @Aspect | 修飾代理類 |
| @Before | 設(shè)置通知 業(yè)務(wù)方法調(diào)用前執(zhí)行 before 方法 |
| @After | 設(shè)置通知 業(yè)務(wù)方法調(diào)用后執(zhí)行After方法 |
\
Reference:
[1]@Controller和@RestController的區(qū)別?
[2]何為Spring中的配置類?
[13]Spring中可以相互替換的注解
--------------------------下面是沒看的-------------------------------------------
[3]使用spring配置類代替xml配置文件注冊bean類
[4]簡單講講@SpringBootApplication
[5]@SpringBootApplication的使用
[6]使用spring配置類代替xml配置文件注冊bean類
[7]Spring常用注解匯總
[8]SpringBoot常用注解思維導(dǎo)圖
[9]Spring中的常見注解
[10]Spring常用注解
[11]Spring框架常用注解
[12]Spring系列之Spring常用注解總結(jié)
[13]SpringBoot常用注解思維導(dǎo)圖
總結(jié)
以上是生活随笔為你收集整理的spring的各种注解的作用-持续更新中的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 地图服务 纬度、经度对应坐标轴x,y
- 下一篇: 调整xfce中的鼠标大小到48以上-目前