java spring - 自動裝配Bean 注解大全


  @Configuration 將一個類定義為Bean的配置類

  @Componet("userDao")  通過Repository定義一個DAO的bean

    等價於<bean id="userDao" class="com.ib.anno.UserDao"/>

  @Repository 用戶對DAO實現類進行注解

  @Service 用戶對Service實現類進行注解

  @Controller 用戶對Controller實現類進行注解

 

  @Autowired  默認按類型匹配注入Bean,自動注入,默認情況下required為ture,要求一頂耀找到匹配的Bean,否則報NoSuchBeanDefinitionException

  @Autowired(required=false)  容器中沒有一個標注變量類型匹配的Bean,忽略NoSuchBeanDefinitionException異常

  @Qualifier("userDao")  指定注入userDao Bean的名稱(如果一個方法擁有多個入參,在默認情況下Spring自動選擇匹配入參類型的Bean進行注入。Spring允許對方法入參標注@Qualifier以指定注入Bean的名稱)

 

  以下兩個注解和@Autowired注解的功能類似,除非必要都使用@Autowired注解

  @Resource("userDao") 按名稱匹配注入Bean,要求提供一個Bean名稱的屬性,如果屬性為空,則自動采用標注處的變量名或方法名作為Bean 的名稱

      @Inject 按類型匹配注入Bean,沒有required屬性

 

  @PostConstruct  相當於bean的init-method屬性的功能 

  @PreDestroy   相當於bean的destroy-method屬性的功能

 

 

Spring2.5 引入注解式處理器支持,通過@Controller 和 @RequestMapping注解定義我們的處理器
類。並且提供了一組強大的注解:
需要通過處理器映射DefaultAnnotationHandlerMapping和處理器適配器AnnotationMethodHandlerAdapter來開啟支
持@Controller 和 @RequestMapping 注解的處理器。
@Controller:用於標識是處理器類;
@RequestMapping:請求到處理器功能方法的映射規則;
@RequestParam:請求參數到處理器功能處理方法的方法參數上的綁定;
@ModelAttribute:請求參數到命令對象的綁定;
@SessionAttributes:用於聲明session 級別存儲的屬性,放置在處理器類上,通常列出模型屬性(如
@ModelAttribute)對應的名稱,則這些屬性會透明的保存到session 中;
@InitBinder:自定義數據綁定注冊支持,用於將請求參數轉換到命令對象屬性的對應類型;

 

、Spring3.0 引入RESTful 架構風格支持(通過@PathVariable注解和一些其他特性支持),且又引入了
更多的注解支持:
@CookieValue:cookie 數據到處理器功能處理方法的方法參數上的綁定;
@RequestHeader:請求頭(header)數據到處理器功能處理方法的方法參數上的綁定;
@RequestBody:請求的body體的綁定(通過HttpMessageConverter 進行類型轉換);
@ResponseBody:處理器功能處理方法的返回值作為響應體(通過HttpMessageConverter進行類型轉換);
@ResponseStatus:定義處理器功能處理方法/異常處理器返回的狀態碼和原因;
@ExceptionHandler:注解式聲明異常處理器;
@PathVariable:請求URI 中的模板變量部分到處理器功能處理方法的方法參數上的綁定,從而支持RESTful架構風
格的URI;

 

JSR-303 驗證框架的無縫支持(通過@Valid 注解定義驗證元數據);
使用Spring 3 開始的ConversionService 進行類型轉換(PropertyEditor 依然有效),支持使用@NumberFormat 和
@DateTimeFormat來進行數字和日期的格式化;
HttpMessageConverter(Http輸入/輸出轉換器,比如JSON、XML 等的數據輸出轉換器);
ContentNegotiatingViewResolver,內容協商視圖解析器,它還是視圖解析器,只是它支持根據請求信息將同一模型
數據以不同的視圖方式展示(如json、xml、html 等),RESTful 架構風格中很重要的概念(同一資源,多種表現形式);
Spring 3 引入 一個 mvc XML 的命名空間用於支持mvc 配置,包括如:
<mvc:annotation-driven>:
自動注冊基於注解風格的處理器需要的DefaultAnnotationHandlerMapping、AnnotationMethodHandlerAdapter
支持Spring3的ConversionService 自動注冊
支持JSR-303驗證框架的自動探測並注冊(只需把JSR-303實現放置到classpath)
自動注冊相應的HttpMessageConverter(用於支持@RequestBody 和 @ResponseBody)(如XML輸入輸出轉換器
(只需將JAXP實現放置到classpath)、JSON 輸入輸出轉換器(只需將Jackson 實現放置到classpath))等。
<mvc:interceptors>:注冊自定義的處理器攔截器;
<mvc:view-controller>:和ParameterizableViewController 類似,收到相應請求后直接選擇相應的視圖;
<mvc:resources>:邏輯靜態資源路徑到物理靜態資源路徑的支持;
<mvc:default-servlet-handler>:當在web.xml 中DispatcherServlet使用<url-pattern>/</url-pattern> 映射時,能映射靜
態資源(當Spring Web MVC框架沒有處理請求對應的控制器時(如一些靜態資源),轉交給默認的Servlet來響應靜態
文件,否則報404 找不到資源錯誤,)。
……等等。
五、Spring3.1 新特性:
對Servlet 3.0 的全面支持。
@EnableWebMvc:用於在基於Java類定義Bean 配置中開啟MVC 支持,和XML 中的<mvc:annotation-driven>功能一樣;
新的@Contoller 和@RequestMapping 注解支持類:處理器映射RequestMappingHandlerMapping 和 處理器適配器
RequestMappingHandlerAdapter組合來代替Spring2.5 開始的處理器映射DefaultAnnotationHandlerMapping和處理
器適配器AnnotationMethodHandlerAdapter,提供更多的擴展點,它們之間的區別我們在處理器映射一章介紹。
新的@ExceptionHandler 注解支持類: ExceptionHandlerExceptionResolver 來代替Spring3.0 的
AnnotationMethodHandlerExceptionResolver,在異常處理器一章我們再詳細講解它們的區別。
@RequestMapping 的"consumes" 和 "produces" 條件支持:用於支持@RequestBody 和 @ResponseBody,
○1 consumes 指定請求的內容是什么類型的內容,即本處理方法消費什么類型的數據,如consumes="application/json"
表示JSON 類型的內容,Spring會根據相應的HttpMessageConverter 進行請求內容區數據到@RequestBody注解的命令
對象的轉換;
○2 produces 指定生產什么類型的內容,如produces="application/json"表示JSON 類型的內容,Spring的根據相應的
HttpMessageConverter 進行請求內容區數據到@RequestBody 注解的命令對象的轉換,Spring 會根據相應的
HttpMessageConverter進行模型數據(返回值)到JSON 響應內容的轉換
○3 以上內容,本章第×××節詳述。
URI 模板變量增強:URI 模板變量可以直接綁定到@ModelAttribute 指定的命令對象、@PathVariable 方法參數在視圖
渲染之前被合並到模型數據中(除JSON序列化、XML混搭場景下)。
@Validated:JSR-303 的javax.validation.Valid 一種變體(非JSR-303 規范定義的,而是Spring 自定義的),用於
提供對Spring 的驗證器(org.springframework.validation.Validator)支持,需要Hibernate Validator 4.2及更
高版本支持;
@RequestPart : 提供對“ multipart/form-data ” 請求的全面支持, 支持Servlet 3.0 文件上傳
(javax.servlet.http.Part)、支持內容的HttpMessageConverter(即根據請求頭的Content-Type,來判斷內容區數
據是什么類型,如JSON、XML,能自動轉換為命令對象),比@RequestParam 更強大(只能對請求參數數據綁定,key-alue
格式),而@RequestPart 支持如JSON、XML 內容區數據的綁定;詳見本章的第×××節;
Flash 屬性 和 RedirectAttribute:通過FlashMap 存儲一個請求的輸出,當進入另一個請求時作為該請求的輸入,
典型場景如重定向(POST-REDIRECT-GET 模式,1、POST 時將下一次需要的數據放在FlashMap;2、重定向;3、通過
GET 訪問重定向的地址,此時FlashMap 會把1 放到FlashMap 的數據取出放到請求中,並從FlashMap 中刪除;從而支
持在兩次請求之間保存數據並防止了重復表單提交)。
Spring Web MVC 提供FlashMapManager 用於管理FlashMap,默認使用SessionFlashMapManager,即數據默認存儲
在session中。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM