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