@RestController
@RequestMapping("/api/users")
public class UserController {
@GetMapping("/{id}")
public User getUser(@PathVariable Long id) {
User user = userService.findById(id);
return user;
}
@PostMapping
public User createUser(@RequestBody User user) {
User savedUser = userService.save(user);
return savedUser;
}
}
@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
@Autowired
private UserController userController;
@Override
public void configurePathMatch(PathMatchConfigurer configurer) {
configurer.setUseSuffixPatternMatch(false);
}
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("forward:/index.html");
}
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**").addResourceLocations("classpath:/public/");
}
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedMethods("GET", "POST", "PUT", "DELETE")
.allowedHeaders("*")
.allowedOrigins("*");
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoggingInterceptor());
}
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(new MappingJackson2HttpMessageConverter());
converters.add(new StringHttpMessageConverter());
}
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
argumentResolvers.add(new RequestBodyArgumentResolver());
}
@Override
public void addReturnValueHandlers(List<HandlerMethodReturnValueHandler> returnValueHandlers) {
returnValueHandlers.add(new ResponseBodyReturnValueHandler());
}
@Override
public void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> exceptionResolvers) {
exceptionResolvers.add(new RestExceptionHandler());
}
@Override
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
configurer.defaultContentType(MediaType.APPLICATION_JSON);
}
@Bean
public HandlerMapping handlerMapping() {
RequestMappingHandlerMapping mapping = new RequestMappingHandlerMapping();
mapping.setOrder(0);
mapping.setInterceptors(new Object[] {new AnotherInterceptor()});
return mapping;
}
@Bean
public HandlerAdapter handlerAdapter() {
RequestMappingHandlerAdapter adapter = new RequestMappingHandlerAdapter();
adapter.setArgumentResolvers(Arrays.asList(new HandlerMethodArgumentResolver[] {new RequestParamArgumentResolver()}));
adapter.setReturnValueHandlers(Arrays.asList(new HandlerMethodReturnValueHandler[] {new ResponseBodyReturnValueHandler()}));
return adapter;
}
@Bean
public HandlerExceptionResolver exceptionResolver() {
ExceptionHandlerExceptionResolver exceptionResolver = new ExceptionHandlerExceptionResolver();
exceptionResolver.setMessageConverters(Arrays.asList(new HttpMessageConverter<?>[] {new MappingJackson2HttpMessageConverter()}));
return exceptionResolver;
}
@Bean
public HomeController homeController() {
return new HomeController();
}
@Bean
public UserController userController() {
return new UserController();
}
}
@SpringBootApplication
public class MyRestServiceApplication {
public static void main(String[] args) {
SpringApplication.run(MyRestServiceApplication.class, args);
}
}