当然,如果该类下所有的接口都是返回application/json格式数据的接口,则可以直接将类上的**@Controller注解替换成 @RestController 注解。...@RestController注解是一个组合注解是由@Controller注解和@ResponseBody注解组成**。 思考升华 至此,问题是解决了。但是,心中的小问号还萦绕在心头。...然后,DispatcherServlet会根据url去HandelMapping中找到能处理该请求的Handler。...o.s.web.servlet.PageNotFound : No mapping for GET /v1/user/v1/user/test springboot中的WebMvcAutoConfiguration类配置默认资源映射地址是...如果没有加这个注解,只有@RequestMapping这个注解的话,则返回值通常解析为跳转路径,控制器返回的时候路径会变为(在当前路径的上一级路径上追加路径),然后返回的过程找不到对应的视图,导致404
@SpringBootApplication 包含@Configuration、@EnableAutoConfiguration、@ComponentScan 通常用在主类上。 1.2....@Configuration 指出该类是 Bean 配置的信息源,相当于XML中的,一般加在主类上。 1.9....@EnableAutoConfiguration 让 Spring Boot 根据应用所声明的依赖来对 Spring 框架进行自动配置,一般加在主类上。 1.11....属性指定回调类 @RestController 返回json字符串的数据,直接可以编写RESTFul的接口; @CrossOrigin 可以处理跨域请求,让你能访问不是一个域的文件; @ApiOperation...:当发生http 404错误时,如果该字段位true,会调用decoder进行解码,否则抛出FeignException configuration: Feign配置类,可以自定义Feign的Encoder
类。...在Spring Boot中,需要在构建文件中指定启动的主类。...在build.gradle中添加主类名,如下所示 - mainClassName="com.test.demo.DemoApplication" 将打包JAR更新为WAR 使用以下代码将包装JAR...build.gradle 中添加应用程序插件和war插件,如下所示 - apply plugin: 'war' apply plugin: 'application' 对于GradlNow,编写一个简单的Rest端点来返回字符串...然后创建WAR文件,可以在目标目录中找到它,如下面给出的屏幕截图所示 - ? 对于Gradle,使用命令gradle clean build打包应用程序。
一个简单的Controller // 使用注解 @RestController,表明当前类是一个基于REST 规范的HTTP API Controller @RestController // @RequestMapping..., status=404,404!...如果使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,或者html,配置的视图解析器不起作用,返回的内容就是return里的内容。...针对情况1,解决方法就是在方法的返回上加上注解:@ResponseBody: @ResponseBody // 如果当前Controller被@Controller注解,又想返回字符串或其他原始数据 @...我们提到了三种方式:1、@Component;2、Java配置类;3、XML配置。对于第2、3点,好像目前我们的样例中并没有做手动配置的事情。
以在src/java/main目录下找到主类文件。 在此示例中,主类文件位于src/java/main目录中,其默认包为com.yiibai.demo。...SpringApplication.run(DemoApplication.class, args); } } 编写一个Rest端点 要在Spring Boot Application主类文件本身中编写一个简单的...Hello World Rest 端点,请按照以下步骤操作 - 1.首先,在类的顶部添加@RestController注释。...3.Request URI方法应该返回Hello World字符串。4.现在,Spring Boot Application类文件将如下面的代码所示。...用Java运行Hello World 创建可执行JAR文件后,可以在以下目录中找到它。
新建异常信息实体类 非必要的类,主要用于包装异常信息。...新建异常处理类 我们只需要在类上加上@ControllerAdvice注解这个类就成为了全局异常处理类,当然你也可以通过 assignableTypes指定特定的 Controller 类,让异常处理类只处理特定类抛出的异常...controller模拟抛出异常 src/main/java/com/twuc/webApp/web/ExceptionController.java /** * @author shuang.kou */ @RestController...super(message); } } src/main/java/com/twuc/webApp/web/ResponseStatusExceptionController.java @RestController...ResourceNotFoundException()); } 使用 Get 请求 localhost:8080/api/resourceNotFoundException2[3] ,服务端返回的
如果自定义一个的错误处理类,上面默认的处理类将不会起作用。getErrorPath()返回的路径服务器将会重定向到该路径对应的处理类,本例中为error方法。...} @Override public String getErrorPath() { return ERROR_PATH; } } 以上定义了一个统一的返回类...从返回可以看出是由HttpErrorController类处理 { "code":0, "message":"HttpErrorController error:404", } 发出一个正常的请求...从返回中可以看出是由GlobalExceptionHandler类处理 { "code":0, "message":"request error:200", "data":"GlobalExceptionHandler...类ErrorController方式可以处理所有的异常,包括未进入控制器的错误,比如404、401等错误 如果应用中两者共同存在,则@ControllerAdvice方式处理控制器抛出的异常,类ErrorController
cloud-provider-payment cloud: zookeeper: connect-string: 192.168.91.200:2181 # zookeeper服务IP加端口号 主启动类...main(String[] args) { SpringApplication.run(PaymentMain8004.class,args); } } Controller @RestController...cloud-consumer-order cloud: zookeeper: connect-string: 192.168.91.200:2181 80端口被占用了,我换为81 主启动类...static void main(String[] args) { SpringApplication.run(OrderZKMain80.class,args); } } 业务类...@LoadBalanced public RestTemplate restTemplate(){ return new RestTemplate(); } } @RestController
这里需要注意的是,如果你使用了@RequestMapping注解,并且没有用@Responsebody,则会报404。因为返回结果被解析成跳转路径,而这条路径根本不存在。...@ResponseBody 将方法返回的结果添加到响应体中(不能使用重定向行为 ‘redirect:/xxxx’),返回类型为json @Component 该注解声明的类,将会添加到容器中,可以通过容器获得...如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常 2....如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常 4....如果既没有指定name,又没有指定type,则自动按照byName方式进行装配;如果没有匹配,则则按照类型进行匹配,如果匹配则自动装配; @Controller 定义一个控制器类的bean @RestController
找到这个类: 这个是SpringBoot项目的启动类,运行: 打开浏览器,输入http://localhost:8080/ 发现: 项目给我们抛了一个404,这个是当然的了,因为我们确实什么都没有写啊。...; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloController...String hello(){ return "Hello Spring Boot"; } } 其中,RestController...这里就是返回一个字符串 "Hello Spring Boot" 。...重新启动 DemoApplication 类,在浏览器中输入: http://localhost:8080/hello 可以看到效果: 您的支持是我写作的最大动力: 个人网站:http://java520
错误处理 友好页面 先演示非友好页面,修改 FastJsonController 类中的 test 方法: @RestController @RequestMapping("fastjson") public...上边处理的 5xx 状态码的问题,接下来解决 404 状态码的问题。 当出现 404 的情况时,用户浏览的页面也不够友好,因此我们也需要自定义一个友好的页面给用户展示。...在 /public/error 目录下再创建一个名为 404.html 的文件: <!...方法返回值可自定义。...path; } public void setPath(String path) { this.path = path; } } 编写 Controller,用于处理文件上传下载: @RestController
然后他就叫负责同个微服务B的同事小王,也帮忙试一下,发现结果就是404。后面没招,小李就去求助他们项目资深同事小林。...,小林说最好是把加@Async的逻辑挪到service层去处理,不过也不是controller就不能使用@Async注解了,接着小林为了验证这个想法,他把原来实现的接口类去掉,形如下@RestController...因此这个方法对于找复合型注解很有用当我们使用jdk动态代理时,因为父类上没加@Controller或者@RequestMapping,因此他不会被mvc进行映射处理,导致404。...而使用cglib时,因为他是作为子类继承了目标类,因此他会继承目标类上的注解,因此当为cglib代理时,他会正常被mvc进行映射处理2、为何controller里面加了@Asyn异步就失效了这是因为加了...解决的推荐方法就是将@Async抽离出controller,新建一个service类进行处理。
1 1 字开头,这一类型的状态码,代表请求已被接受,需要继续处理。这类响应是临时响应,只包含状态码行和某些可选的响应头信息,并以空行结束。...由于HTTP/1.0协议中没有定义任何1xx状态码,所以除非在某些试验条件下,服务器禁止向此类客户端发送1xx响应。 这些状态码代表的响应都是信息性的,表示客户应该采取的其他行动。...200 交易成功 201 已创建 202 服务器已接受请求,但未处理 203 非权威性信息 204 服务器成功处理了请求,无返回内容 205...服务器成功处理了请求,无返回内容,并与204响应不同,此响应要求请求者重置文档视图。...400 错误请求 401 访问被拒绝,如果返回"找不到文件"的提示,用header()函数 403 禁止访问 404 没有发现文件 5 5字开头,代表了服务器在处理请求的过程中有错误或者异常状态发生
简介在SpringMVC中,我们可以使用HttpServletResponse对象来向浏览器返回数据。...HttpServletResponse是HTTP响应的封装类,它封装了HTTP响应的状态码、头部信息和响应体等内容。...JSON数据的示例:@RestController@RequestMapping("/users")public class UserController { @Autowired private...application/json;charset=UTF-8"); response.getWriter().write(json); }}在上述示例中,我们使用了SpringMVC的@RestController...首先,我们从userService中获取指定id的用户信息,如果用户不存在,我们设置响应状态码为404,并返回。否则,我们使用Jackson库将用户信息转换成JSON格式的字符串。
:404 错误时,调用 decoder 进行解码,否则抛出 FeignException fallback:发生错误时,回调 hystrix 类/方法(后面会详细介绍) package com.battcn.api...* @author Levin * @since 2018/9/26 0026 */ @FeignClient(name = "product-server/products", decode404...org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController...; /** * @author Levin * @since 2018/9/26 0026 */ @RestController @RequestMapping("/orders") public...GetMapping public String query() { return this.productClient.selectProductById(10L); } } 主函数
main(String[] args) { SpringApplication.run(MybatisApplication.class, args); } } 如果在启动类中添加了扫描配置...return "error-500"; } } return "error"; } } 第四步:创建一个控制器,用来抛出异常 @RestController...GetMapping("/") public void index() { throw new NullPointerException(); } } 第五步:创建启动类...专车总结 第一个问题:如何针对不同的异常返回自定义错误页面?...自定义错误页面最主要的是要实现ErrorController,然后从request作用域中获取相应的错误码,针对不同的错误码,返回对应的页面 专车地址 [SpringBoot自定义错误页面](https
@RestController @RestController注解在类上,表示这是一个控制层bean,相当于@ResponseBody和·@Controller的组合注解。...使用此注解无法返回jsp,html页面,InternalResourceViewResolver不起作用。返回的内容就是return的内容。...使用,否则会报404。...@Configuration注解的类中,使用@Bean注解标注的方法,返回的类型都会直接注册为bean。...@Bean 该注解在该类的方法上,AnnotationConfigApplicationContext将配置类中标注了@Bean的方法的返回值识别为Spring Bean,并注册到容器中,归入IoC容器管理
serviceInstance=this.getServiceInstance(); if (serviceInstance==null) throw new RuntimeException("404...页面返回信息 成功查询到数据库存储信息。 2.Ribbon方式功能的Spring RestTemplate 同上。...测试类: @RestController @RequestMapping("rest") public class ConsumerRestController { @Autowired ...主启动类: @SpringBootApplication @EnableEurekaClient @EnableFeignClients public class Consumer_feign_Application...@RestController @RequestMapping("rest") public class ConsumerRestController { @Autowired private
统一结果返回与统一异常 3. controller代码测试与结果 4. 404异常特殊处理。 5....这里我们就定义好了统一的结果返回,其中里面的静态方法是用来当程序异常的时候转换成异常返回规定的格式。 然后我们需要自定义异常处理类。...3. controller代码测试与结果 controller代码: @RestController @RequestMapping("/result") public class ResultController...默认情况下,SpringBoot是不会抛出404异常的,所以**@ControllerAdvice**也不能捕获到404异常。我们可以通过以下配置来让这个注解能捕获到404异常。...总结 本文讲解了如何处理捕获全局异常以及怎么自定义异常,顺便说明了统一结果的返回格式,并特殊处理的404,not found的异常,将其作为统一结果返回。如果你觉得本文有用,
领取专属 10元无门槛券
手把手带您无忧上云