常見的springmvc、SpringBoot的註解

springMvc的經常使用註解 :


@Controller
 :用於標記在一個類上,使用它標記的類就是一個springmcv Controller對象,分發處理器將會掃描使用了該註解
 的類的方法,並檢測該方法是否使用了@RequestMapping註解。@Controller只是定義
 了一個控制器類,而使用了@RequestMapping註解的方法纔是真正處理請求的處理器html

@RequestMapping
 :用於標記在一個方法或類上,用來處理請求地址映射的註解,用於類上,表示類中全部響應請求處理的方法都是以該地址
  做爲父路徑,返回值會經過視圖解析器解析爲實際的物理視圖,而後作轉發操做
 屬性:
  value:指定請求的實際地址
  method: 指定請求的method類型
  consumes: 指定處理請求的內容提交類型(Content-Type),例如application/josn,text/html
  produces: 指定返回的內容類型,僅當request請求頭中的(Accept)類型中包含該指定類型才返回
  param: 指定request中必須包含的參數值
  headers:指定request中必須包含某些指定的header值,才能讓改方法處理請求java

@Resource和@Autowired
  @Resource和@Autowired都是作bean的注入時使用,其實@Resource並非Spring的註解,它的包是javax.annotation.Resource,須要導入,可是Spring支持該註解的注入。
  一、共同點
    二者均可以寫在字段和setter方法上。二者若是都寫在字段上,那麼就不須要再寫setter方法。
  二、不一樣點
  (1)@Autowired
  @Autowired爲Spring提供的註解,須要導入包org.springframework.beans.factory.annotation.Autowired;只按照byType注入。
   返回值會經過視圖解析器解析爲實際的物理視圖,而後作轉發操做spring


     @Autowired註解是按照類型(byType)裝配依賴對象,默認狀況下它要求依賴對象必須存在,若是容許null值,能夠設置它的required屬            性爲false。若是咱們想使用按照名稱(byName)來裝配,能夠結合@Qualifier註解一塊兒使用。以下:
   public class HelloWorld{
          @Autowired
          @Qualifier("userDao")
    private UserDao userDao;
   }
    (2)@Resource默認按照ByName自動注入,由J2EE提供,須要導入包javax.annotation.Resource。
        @Resource有兩個重要的屬性:name和type,而Spring將@Resource註解的name屬性解析爲bean的名字,而type屬性則解析爲         bean的類型。
         因此,若是使用name屬性,則使用byName的自動注入策略,而使用type屬性時則使用byType自動注入策略。若是既不制定name也不制定type屬性,
         這時將經過反射機制使用byName自動注入策略。
 
@PathVariable
 用於將請求URL中的模板變量映射到功能處理方法的參數上,即取出uri模板中的變量做爲參數。
 @RequestMapping(value="/user/{userId}/roles/{roleId}",method = RequestMethod.GET) 
      public String getLogin(@PathVariable("userId") String userId, 
          @PathVariable("roleId") String roleId){ 
          System.out.println("User Id : " + userId); 
          System.out.println("Role Id : " + roleId); 
          return "hello"; 
      }  json

@CookieValue
  做用:用來獲取Cookie中的值;
  參數: value:參數名稱   required:是否必須  defaultValue:默認值
 @RequestMapping("/testCookieValue")
    public String testCookieValue(@CookieValue("JSESSIONID") String sessionId) {
        System.out.println("JSESSIONID = " + sessionId);
        return "success";
    }session

@RequestParam
  @RequestParam用於將請求參數區數據映射到功能處理方法的參數上,用例:
 @RequestMapping("/testRequestParam")
  public String testRequestParam(@RequestParam("id") int id) {
   System.out.println("testRequestParam  " + id);
        return "success";
    }app

@SessionAttributes
  @SessionAttributes即將值放到session做用域中,寫在class上面。  
  @SessionAttributes 除了能夠經過屬性名指定須要放到會話中的屬性外(value 屬性值),
還能夠經過模型屬性的對象類型指定哪些模型屬性須要放到會話中(types 屬性值),
用例:@SessionAttributes(value = {"user"}, types = {String.class})框架

@ResponseBody 
  做用: 該註解用於將Controller的方法返回的對象,經過適當的HttpMessageConverter轉換爲指定格式後,寫入到Response對象的body數據區。
使用時機:返回的數據不是html標籤的頁面,而是其餘某種格式的數據時(如json、xml等)ui


Springboot經常使用註解:

@SpringBootApplication:
 包含@Configuration、@EnableAutoConfigeration、@ComponentScan
 一般用在主類上component


@Repository:
 用於標註數據訪問組件,既DAO組件xml

@Service
 用於標註業務層組件


@RestController:
 包含@Controller、@ResponseBody
 用於標註控制層組件


@ResponseBody:
 表示該方法返回的結果直接寫入Http Response body中,不會被解析爲跳轉路徑

@Component:
 泛指組件,當組件很差歸類時使用

@ComponentScan:
 組件掃描,至關於<context:component-scan>,若是掃描到有@Component、@Controller、@Service等這些
 註解的類,則把這些類祖冊爲bean

@Configuration:
 指出該類是Bean配置的信息源,至關於XML中的<beans></beans>,通常加在主類上

@Bean:
 至關於XML中的<bean></bean>,放在方法上,意思是生產一個Bean,並交由spring管理

@EnableAutoConfiguration:
 讓Springboot根據應用所聲明的依賴來對spring框架進行自動配置,通常加在主類上

@AutoWired:
 byType方法。把配置好的Bean拿來用,完成屬性、方法的組裝,自動裝配,當加上(required=false)時,
 即使找不到這個Bean也不報錯

@Qualifier:
 當有多個同一類型的Bean時,能夠用@Qualifier("name")來指定,與@Autowired配合使用

@Resource(name="name",type="type"):
 沒有括號的話,默認ByName,與@Autowired相似

@Profiles
 spring Profiles提供了一種隔離應用程序配置的方式,並讓這些配置只能在特定的環境下生效
 任何@Component或@Configuraion都能被@Profile標記,從而限制加載它的時機

@ConfigurationProerties
 SpringBoot加載校驗外部的配置

@ControllerAdvice
 包含@Component,能夠被掃描,用於統一處理異常

@ExceptionHandler(Exception.class): 用於方法上表示遇到這個異常就執行這個方法,與@ControllerAdvice 配合使用

相關文章
相關標籤/搜索