常見的springmvc、SpringBoot的注解


springMvc的常用注解 :


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

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

@Resource和@Autowired
  @Resource和@Autowired都是做bean的注入時使用,其實@Resource並不是Spring的注解,它的包是javax.annotation.Resource,需要導入,但是Spring支持該注解的注入。
  1、共同點
    兩者都可以寫在字段和setter方法上。兩者如果都寫在字段上,那么就不需要再寫setter方法。
  2、不同點
  (1)@Autowired
  @Autowired為Spring提供的注解,需要導入包org.springframework.beans.factory.annotation.Autowired;只按照byType注入。
   返回值會通過視圖解析器解析為實際的物理視圖,然后做轉發操作


     @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"; 
      } 

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

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

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

@ResponseBody 
  作用: 該注解用於將Controller的方法返回的對象,通過適當的HttpMessageConverter轉換為指定格式后,寫入到Response對象的body數據區。
使用時機:返回的數據不是html標簽的頁面,而是其他某種格式的數據時(如json、xml等)


Springboot常用注解:

@SpringBootApplication:
 包含@Configuration、@EnableAutoConfigeration、@ComponentScan
 通常用在主類上


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

@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 配合使用


免責聲明!

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



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