Spring知識——註解

spring開發中經常使用到的註解

@PostConstruct

在bean初始化以後調用方法,能夠用@PostConstruct標識該方法html

@PreDestory

在bean被銷燬前調用該方法,能夠用@PreDestory標識該方法web

@ModelAttribute

做用在方法參數上:將以前model中的屬性賦值到參數的屬性中spring

@RequestBody

將請求體中參數賦值到方法參數(對象)的屬性中,用於post請求中
@Responsebody 註解表示該方法的返回的結果直接寫入 HTTP 響應正文(ResponseBody)中,通常在異步獲取數據時使用,一般是在使用 @RequestMapping 後,返回值一般解析爲跳轉路徑,加上 @Responsebody 後返回結果不會被解析爲跳轉路徑,而是直接寫入HTTP 響應正文中。 express

這裏須要注意的是,若是你使用了@RequestMapping註解,而且沒有用@Responsebody,則會報404。由於返回結果被解析成跳轉路徑,而這條路徑根本不存在。json

@RequestParam

把url?後面的參數賦值到指定名稱的參數上。若是參數不寫RequestParam,默認也會從url中相同參數名稱獲取參數值賦值到對應的變量中。好比有void test(String name),假如url爲/app/tesdad?name=huangy,那麼就會把huangy賦值給name參數。spring-mvc

@ResponseBody

將方法返回的結果添加到響應體中(不能使用重定向行爲 ‘redirect:/xxxx’),返回類型爲jsonmvc

@Component

該註解聲明的類,將會添加到容器中,能夠經過容器得到app

@Service

註解聲明的類,將會添加到容器中,能夠經過容器得到。假如在一個類上面聲明@Service,這個類叫作CustomerService,那麼經過ref=’customerService’就能夠得到這個bean異步

@Resource

bean的注入,@Resource按照名稱(byName)注入post

@Autowire

bean的注入,@Autowire按照類型注入

補充

@Autowired按byType自動注入,而@Resource默認按 byName自動注入罷了(這裏name指的是bean的id)。@Resource有兩個屬性是比較重要的,分是name和type,Spring將@Resource註解的name屬性解析爲bean的id,而type屬性則解析爲bean的類型。因此若是使用name屬性,則使用byName的自動注入策略,而使用type屬性時則使用byType自動注入策略。若是既不指定name也不指定type屬性,這時將經過反射機制使用byName自動注入策略。
      @Resource裝配順序
      1. 若是同時指定了name和type,則從Spring上下文中找到惟一匹配的bean進行裝配,找不到則拋出異常
      2. 若是指定了name,則從上下文中查找名稱(id)匹配的bean進行裝配,找不到則拋出異常
      3. 若是指定了type,則從上下文中找到類型匹配的惟一bean進行裝配,找不到或者找到多個,都會拋出異常
      4. 若是既沒有指定name,又沒有指定type,則自動按照byName方式進行裝配;若是沒有匹配,則則按照類型進行匹配,若是匹配則自動裝配;

@Controller

定義一個控制器類的bean

@RestController

一、一樣定義一個控制器類,多了一些特徵
二、每個@RequestMapping上默認添加了@ResponseBody
三、支持Rest客戶端異步無阻塞

@RequestMapping

一、@RequestMapping映射url到控制器類或者方法上。當@RequestMapping標記在類上面時,方法中@RequestMapping的請求地址都是相對類上的@RequestMapping的請求地址而言的;當Controller上沒有@RequestMapping標記,方法上的@RequestMapping都是絕對路徑。
二、URI模板:

a、如今有URI模板/test/{variable},假如請求URL爲/test/hello,該URL跟模板相匹配,就把{variable}替換成hello
    b、@PathVariable:標記一個方法參數,該參數的值將使用URI模板中對應的變量的值來賦值

三、屬性:

a、produces : 能夠指定返回內容的類型(如application/json),也能夠指定返回內容的編碼(如charset=UTF-8)
    b、consumes : 能夠指定提交數據的類型
    c、value : 指定url
    d、method : 指定HTTP請求方法(如RequestMethod.POST)

@interface

定義一個註解: @interface Name {}

@Rentention

該註解的保留級別(該註解在何時是可見的)

@Target

設定註解的使用範圍

@Inherited

該若是一個註解被用在A類上,B類繼承A類,B類自動繼承父類的這個註解

@Value

@Value能夠讀取配置文件屬性的值(包括配置中心的文件)
```
    @Value("${dubbo.application.name}")
    private String applicationName;
```

@ExceptionHandler

定義了這個註解的方法,當前類的異常都會被這個方法捕獲
詳細見: https://www.cnblogs.com/shuimuzhushui/p/6791600.html

spring-mvc

一、使用@Controller註解,必須添加配置:

`<!-- 啓用對類包進行掃描以及Bean定義的功能,同時啓用自動注入功能 -->
    <context:component-scan base-package="com.mall.web"/>
    <!-- component-scan有一個屬性須要注意,就是use-default-filters。
    瞭解 use-default-filters 這個屬性的做用。use-default-filters 屬性的默認值爲 true,即便用默認的 Filter 進行包掃描(值爲true),會對標有 @Service,@Controller和@Repository 的註解的類進行掃描。
    若是use-default-filters值爲false,會只掃描給定註解的類,好比說以下配置:
    
    <context:component-scan base-package="com" use-default-filters="false">
    <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan> 
該配置只會掃描com包下面,註解爲Controller的類
     -->
    

    <!-- 處理@Controller的使用前置配置 -->
    <mvc:annotation-driven/>`

二、加載spring配置文件的方式:

  • 第一種方式:
<!-- spring MVC的核心就是DispatcherServlet,使用springMVC的第一步就是將下面的servlet放入web.xml
        servlet-name屬性很是重要,默認狀況下,DispatchServlet會加載這個名字-servlet.xml的文件,以下,就會加載
        dispather-servlet.xml,也是在WEN-INF目錄下。
   -->
  <servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <!-- 設置dispatchservlet的匹配模式,經過把dispatchservlet映射到/,默認servlet會處理全部的請求,包括靜態資源 -->
  <servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
  • 第二種方式:用於自定義Spring配置文件的名稱,則在web.xml文件中,利用org.springframework.web.context.ContextLoaderListener進行配置。ContextLoaderListener監聽器的做用就是啓動Web容器時,自動裝配ApplicationContext的配置信息。詳情參照:http://blog.csdn.net/ysughw/a...
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:spring/applicationContext.xml</param-value>
  </context-param>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

參考:
https://www.jianshu.com/p/394...

相關文章
相關標籤/搜索