新聞中心
環(huán)境:springboot2.2.10.RELEASE

十余年的襄城網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。營銷型網(wǎng)站的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整襄城建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“襄城網(wǎng)站設(shè)計(jì)”,“襄城網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
編寫一個(gè)準(zhǔn)備用來出來請(qǐng)求的方法
- @Service
- public class UserHandler {
- @ResponseBody
- public Object getUsers(@PathVariable("id") String id, HttpServletRequest request) {
- System.out.println(request) ;
- return "查詢用戶ID為: " + id ;
- }
- }
你的處理程序可以不是受容器管理的Bean。這里還應(yīng)用了SpringMVC相關(guān)的一些注解,這些注解都可以像Controller中使用一樣。
注冊(cè)接口處理程序
- @Configuration
- public class MappingConfig {
- @Autowired
- public void setHandlerMapping(RequestMappingHandlerMapping mapping, UserHandler handler) throws NoSuchMethodException {
- RequestMappingInfo info = RequestMappingInfo.paths("/users/{id}").methods(RequestMethod.GET).build();
- Method method = UserHandler.class.getMethod("getUsers", String.class, HttpServletRequest.class);
- mapping.registerMapping(info, handler, method);
- }
- }
- 創(chuàng)建RequestMappingInfo對(duì)象,就是一些請(qǐng)求的基本元信息。
- 獲取處理程序的方法對(duì)象。
- 通過RequestMappingHandlerMapping注冊(cè)請(qǐng)求映射對(duì)象。
Spring容器在啟動(dòng)過程中會(huì)將所有的Controller處理接口方法都包裝成RequestMappingInfo對(duì)象然后添加到
RequestMappingHandlerMapping對(duì)象的一個(gè)集合中。
注:容器默認(rèn)有很多個(gè)HandlerMapping對(duì)象,具體該如何處理初始化那些類接口是通過
AbstractHandlerMethodMapping#isHandler決定,該方法是個(gè)抽象方法具體是由子類來實(shí)現(xiàn)的。
- public abstract class AbstractHandlerMethodMapping
extends AbstractHandlerMapping implements InitializingBean { - protected abstract boolean isHandler(Class> beanType);
- }
RequestMappingHandlerMapping是AbstractHandlerMethodMapping的子類看看它的實(shí)現(xiàn):
- public class RequestMappingHandlerMapping {
- @Override
- protected boolean isHandler(Class> beanType) {
- return (AnnotatedElementUtils.hasAnnotation(beanType, Controller.class) ||
- AnnotatedElementUtils.hasAnnotation(beanType, RequestMapping.class));
- }
- }
這里判斷了當(dāng)前Bean對(duì)象上是否有@Controller注解或者@RequestMapping對(duì)象;也就是在容器啟動(dòng)后會(huì)將所有的Controller中的接口方法保證注冊(cè)為RequstMappingInfo對(duì)象。
在SpringMVC處理一個(gè)請(qǐng)求的過程中,有一個(gè)流程是取得相應(yīng)的HandlerMapping對(duì)象。
處理方法參數(shù)
處理程序能夠接收那些參數(shù)?
JDK 8的java.util.Optional作為方法參數(shù)與注釋相結(jié)合受到支持具有必需屬性(例如@RequestParam、@RequestHeader和其他屬性)且等效于required=false。
處理方法返回值
文章題目:Springboot如何動(dòng)態(tài)注冊(cè)處理請(qǐng)求接口?這個(gè)知識(shí)點(diǎn)你值得了解一下
文章來源:http://fisionsoft.com.cn/article/cdshdso.html


咨詢
建站咨詢
