2016-05-10 11 views
0

Ich schrieb eine App basierend auf Spring Boot, aber es funktioniert, wenn ich alle Klasse (Modell, contoller, das mit @restController annotiert) in das gleiche Paket von wo SpringBoot vorhanden sind. Meine Frage ist, warum diese Klassen im selben Paket sein müssen?@SpringBootApplication im gleichen Paket?

dies ist der Frühling Boot-App kommentierte:

@SpringBootApplication  
public class Application { 
    public static void main(String[] args) { 
     SpringApplication.run(Application.class, args); 
     } } 

Dies ist der Rest Controller:

@RestController 
public class PersonController { 

    @RequestMapping("/Hello") 
    public String syaHello(@RequestParam(value = "name", defaultValue = "World") String name) { 
     return "Hello " + name; 
    } } 
+0

Ihre Wahrnehmung ist ein bisschen anders, Spring Boot funktioniert sogar auf Multi-Modul-Anwendungen AFAIK, solange die Konfiguration dafür gemacht wird – VinayVeluri

+0

Ich weiß, aber ich konnte nicht verstehen, warum die Klasse, die mit @SpringBootApplication und restController kommentiert werden muss im selben Paket? ich denke, das ist wegen der Scan-Komponente. – Moolerian

Antwort

2

Da dies das Standardverhalten der @SpringBootApplication Annotation ist. Genauer gesagt erkennt die Komponentenüberprüfung alle Konfigurationen und Komponenten im Paket und alle Unterpakete der Klasse mit der Anmerkung. Wenn Sie in anderen Paketen Ihre Klassen haben wollen, dann können Sie diese Pakete oder Klassen mit den Paketen als Attribute in der Anmerkung angeben:

@SpringBootApplication(scanBasePackageClasses = {OneClass.class, AnotherClass.class}) 

Frühling wird dann scannen die Pakete und Unterpakete der Klassen oneclass und Andere.

+0

Danke, es ist meine Antwort. – Moolerian

Verwandte Themen