@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
一、使用@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>
<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>