spring mvc 註解詳解

1. 聲明Bean的註解:
   1.1 @Component : 組件,沒有明確的角色
1.2 @Service : 在業務邏輯層(service層)使用
1.3 @Repository : 在數據訪問層(dao層)使用
1.4 @Controller : 在展現層(MVC--SpringMVC)使用

2. 注入Bean的註解:
2.1 @Autowired : Spring提供的註解
對類成員變量、方法及構造函數進行標註,完成自動裝配的工作。通過 @Autowired的使用來消除set ,get方法
默認按類型裝配(這個註解是屬業spring的),默認情況下必須要求依賴對象必須存在,如果要允許null 值,可以設置它的required屬性爲false,
如:@Autowired(required=false) ,如果我們想使用名稱裝配可以結合@Qualifier註解進行使用

2.2 @Inject : JSR-330(Java的依賴注入標準)提供的註解
和@Aautowired一樣

2.3 @Resource : JSR-250提供的註解
默認安照名稱進行裝配,名稱可以通過name屬性進行指定,
如果沒有指定name屬性,當註解寫在字段上時,默認取字段名進行按照名稱查找,如果註解寫在setter方法上默認取屬性名進行裝配。 當找不到與名稱匹配的bean時才按照類型進行裝配。但是需要注意的是,如果name屬性一旦指定,就只會按照名稱進行裝配。

2.4 三者的區別
@Autowired和@Inject,都是通過AutowiredAnnotationBeanPostProcessor類實現的依賴注入,二者具有可互換性。
@Resource通過CommonAnnotationBeanPostProcessor類實現依賴注入
@Autowired and @Inject
Matches by Type
Restricts by Qualifiers
Matches by Name
@Resource
Matches by Name
Matches by Type
Restricts by Qualifiers (ignored if match is found by name)

3. 配置文件的註解:
3.1 @Configuration : 聲明當前類是個配置類,相當於一個Spring配置的xml文件.
3.2 @ComponentScan (cn.test.demo): 自動掃描包名下所有使用 @Component @Service  @Repository @Controller 的類,並註冊爲Bean
3.3 @WiselyConfiguration : 組合註解 可以替代 @Configuration和@ComponentScan
3.4 @Bean : 註解在方法上,聲明當前方法的返回值爲一個Bean.
3.5 @Bean(initMethod="aa",destroyMethod="bb")--> 指定 aa和bb方法在構造之後.Bean銷燬之前執行.

4. AOP切面編程註解:
@Aspect : 聲明這是一個切面
@After @Before. @Around 定義切面,可以直接將攔截規則(切入點 PointCut)作爲參數
@PointCut : 專門定義攔截規則 然後在 @After @Before. @Around 中調用
@Transcational : 事務處理
@Cacheable : 數據緩存
@EnableAaspectJAutoProxy : 開啓Spring 對 這個切面(Aspect )的支持
@Target (ElementType.TYPE):元註解,用來指定註解修飾類的那個成員 -->指定攔截規則
@Retention(RetentionPolicy.RUNTIME) --->當定義的註解的@Retention爲RUNTIME時,才能夠通過運行時的反射機制來處理註解.-->指定攔截規則

5. @Enable*註解:
@EnableAsync : 開啓異步任務的支持(多線程)
@EnableScheduling : 開啓對計劃任務的支持(定時器)
@EnableWebMVC : 開啓對Web MVC 的配置支持
@EnableAaspectJAutoProxy : 開啓Spring 對 這個切面(Aspect )的支持
@EnableConfigurationProperties 開啓對@ConfigurationProperties註解配置Bean的支持
@EnableJpaRepositories : 開啓對Spring Data JAP Repository 的支持
@EnableTransactionManagement 開啓對註解式事物的支持
@EnableCaching開啓註解是緩存的支持.
@EnableDiscoveryClient 讓服務發現服務器,使用服務器.Spring cloud 實現服務發現
@EnableEurekaServer 註冊服務器 spring cloud 實現服務註冊@
@EnableScheduling 讓spring可以進行任務調度,功能類似於spring.xml文件中的命名空間<task:*>
@EnableCaching 開啓Cache緩存支持;

6. SpringMVC 常用註解:
@Controller : 註解在類上 聲明這個類是springmvc裏的Controller,將其聲明爲一個spring的Bean.
@RequestMapping :可以註解在類上和方法上 映射WEB請求(訪問路徑和參數)
@RequestMapping(value= "/convert",produces+{"application/x-wisely"}) 設置訪問URL 返回值類型
@ResponseBody : 支持將返回值放入response體內 而不是返回一個頁面(返回的是一個組數據)
@RequestBody : 允許request的參數在request體中,而不是直接連接在地址後面 次註解放置在參數前
@Path Variable : 用來接收路徑參數 如/test/001,001爲參數,次註解放置在參數前
@RestController : @Controller + @ResponseBody 組合註解
@ControllerAdvice : 通過@ControllerAdvice可以將對已控制器的全局配置放置在同一個位置
@ExceptionHandler : 用於全局處理控制器的異常
@ExceptionHandier(value=Exception.class) -->通過value屬性可過濾攔截器條件,攔截所有的異常
@InitBinder : 用來設置WebDataBinder , WebDataBinder用來自動綁定前臺請求參數到Model中.
@ModelAttrbuute : 綁定鍵值對到Model中,
@RunWith : 運行器
@RunWith(JUnit4.class)就是指用JUnit4來運行
@RunWith(SpringJUnit4Cla***unner.class),讓測試運行於Spring測試環境
@RunWith(Suite.class)的話就是一套測試集合,
@WebAppConfiguration("src/main/resources") : 註解在類上,用來聲明加載的ApplicationContex 是一個WebApplicationContext ,它的屬性指定的是Web資源的位置,默認爲 src/main/webapp ,自定義修改爲 resource
@Before : 在 xxx 前初始化


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