1
我有一个CustomerController.java:如何添加HTTP生命周期中间件处理程序到spring?
package com.satisfeet.http;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.satisfeet.core.model.Address;
import com.satisfeet.core.model.Customer;
import com.satisfeet.core.service.CustomerService;
@RestController
@RequestMapping("/customers")
public class CustomerController {
@Autowired
private CustomerService service;
@RequestMapping(method = RequestMethod.GET)
public Iterable<Customer> index() {
return this.service.list();
}
@RequestMapping(method = RequestMethod.POST)
public Customer create(@RequestBody Customer customer) {
this.service.create(customer);
return customer;
}
@RequestMapping(method = RequestMethod.GET, value = "/{id}")
public Customer show(@PathVariable Integer id) {
return this.service.show(id);
}
@RequestMapping(method = RequestMethod.PUT, value = "/{id}")
public void update(@PathVariable Integer id, @RequestBody Customer customer) {
this.service.update(id, customer);
}
@RequestMapping(method = RequestMethod.DELETE, value = "/{id}")
public void destroy(@PathVariable Integer id) {
this.service.delete(id);
}
}
和ExceptionController.java:
package com.satisfeet.http;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
import com.satisfeet.core.exception.NotFoundException;
@ControllerAdvice
public class ExceptionController {
@ExceptionHandler(NotFoundException.class)
public ResponseEntity notFoundError() {
return new ResponseEntity(HttpStatus.NOT_FOUND);
}
}
我现在想添加某种HTTP请求 - 响应中间件被执行在写入响应之前,写入json的HTTP状态代码:
HTTP/1.1 404 OK
Connection: close
Content-Type: application/json
{"error":"not found"}
我知道如何将HttpStatus
转换为String
,但我不知道我在哪里可以在全球范围内使用@ControllerAdvice
。
那么如何注册一个可以访问响应对象的全局处理程序?