RequestMapping; ява весна

Я хочу сделать простой веб-сервис, используя Java Spring Restful Web-сервис. Я использую аннотацию сопоставления запросов в классе контроллера, но когда я запускаю проект, там нет сопоставления. Вот контроллер класса:

import java.util.List;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import guru.webservice.domain.Customer;
import guru.webservice.services.CustomerService;

@RestController
@RequestMapping(CustomerController.BASE_URL)
public class CustomerController {
    public static final String BASE_URL = "api/v1/customers";
    private final CustomerService customerService;

    public CustomerController(CustomerService customerService) {
        this.customerService = customerService;
    }

    @GetMapping
    List<Customer> getAllCustomers() {
        return customerService.findAllCustomer();
    }

    @GetMapping("/{id}")
    public Customer getCustomerById(@PathVariable Long id) {
        return customerService.findCustomerById(id);
    }
}

слушай

1 ответ

Решение

Чтобы Spring мог сканировать и настраивать аннотированные классы @Controller, необходимо настроить сканирование компонентов для пакетов, в которых хранятся контроллеры.

то есть: /src/main/java/guru/webservices/spring/config/AppConfig.java

AppConfig.java:

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;

@Configuration
@EnableWebMvc //THIS
@ComponentScan(basePackages = "guru.services") //THIS
public class AppConfig {

}

Также:

@Autowired
private CustomerService customerService;

А потом:

@GetMapping("/{id}")
public ResponseEntity getCustomerById(@PathVariable("id") Long id) {

    Customer customer = customerDAO.get(id);
    if (customer == null) {
        return new ResponseEntity("No Customer found for ID " + id, HttpStatus.NOT_FOUND);
    }

    return new ResponseEntity(customer, HttpStatus.OK);
}
Другие вопросы по тегам