Ich habe Probleme mit Spring-Boot eine einfache Anwendung einrichten, wenn die Application.java, Controller, Dienste und Repositories in verschiedenen Paketen sind.404 Fehler wenn Controller nicht in Application.java Paket. @ ComponentScan funktioniert nicht
Ich weiß, es ist ein häufiges Problem, und ich habe hier festgestellt, dass es darum geht, die Annotation @ ComponentScan in der Hauptklasse einzurichten.
Trotzdem erhalte ich immer noch einen Fehler 404, wenn ich versuche, auf meinen REST-Dienst zuzugreifen.
Hier ist meine Projektstruktur:
main
├── java
│ ├── application
│ │ └── Application.java
│ ├── controllers
│ │ └── CategoryController.java
│ ├── dto
│ │ └── ReturnMessage.java
│ ├── entities
│ │ ├── Category.java
│ │ ├── Post.java
│ │ └── User.java
│ ├── repositories
│ │ └── CategoryRepository.java
│ ├── services
│ │ ├── CategoryService.java
│ │ └── CategoryServiceImpl.java
│ └── utils
│ └── Constants.java
Hier ist mein Application.java:
package application;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
@EnableJpaRepositories
@SpringBootApplication
@Configuration
@ComponentScan("main.java")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
Und der Anfang meiner CategoryController.java:
@RestController
public class CategoryController {
@Autowired
CategoryService categoryService;
/**
* Retourne la liste des catégories
*/
@RequestMapping(value = Constants.REST_BASE_URL + "/categories", method = RequestMethod.GET)
public List<Category> readAll() {
return categoryService.readAll();
}
Constants.REST_BASE_URL ist " rest/", und ich bekomme einen 404 Fehler, wenn ich localhost anrufe: 8080/rest/categories. Ich habe versucht, die Basis-URL zu entfernen und es hat nichts geändert. Es funktioniert, wenn ich den Controller in die Application.java-Klasse setze.
Irgendeine Schätzung, warum es nicht funktioniert? Ich bin neu bei Spring-boot, also könnte da etwas offensichtlich sein, das ich vergessen habe.
Danke.
Danke! Klappt wunderbar. Ich hätte es besser wissen müssen, aber ich war mit der Tunnelsicht auf dem @ComponentScan fest, anstatt den Fehler in der Pakethierarchie zu sehen. –