2015-11-09 2 views

risposta

31

I Spring Boot documentation for @SpringBootApplication stati

Molti sviluppatori Primavera di avvio hanno sempre il loro classe principale annotata con @Configuration, @EnableAutoConfiguration e @ComponentScan. Dato che queste annotazioni sono usate così frequentemente insieme (specialmente se segui le best practice sopra riportate), Spring Boot fornisce un'alternativa @SpringBootApplication conveniente .

Il @SpringBootApplication annotazione è equivalente ad usare @Configuration, @EnableAutoConfiguration e @ComponentScan con la loro gli attributi di default: [...]

dove i @ComponentScan javadoc stati

se i pacchetti specifici non sono definiti, la scansione verrà eseguita dal pacchetto della classe che dichiara questa annotazione n.

Cioè, verranno scansionati solo i tipi che si trovano nello stesso pacchetto del proprio ReadingListApplication.

Se si desidera una configurazione personalizzata, fornire il proprio @Configuration, @EnableAutoConfiguration e @ComponentScan, a seconda dei casi.

7

Quando si imposta un progetto Spring boot, hanno la classe di applicazione (quella che contiene il @SpringBootApplication annotazioni nel pacchetto base.

Una delle cose che il @SpringBootApplication non fa altro che una scansione componente. Ma, si esegue la scansione solo su sotto-pacchetti. cioè se metti quella classe in com.mypackage, allora sarà la scansione per tutte le classi di sotto-pacchetti cioè com.mypackage. *.

Se non si vuole fare in questo In alternativa, è possibile aggiungere un @ComponentScan a una classe specificando il pa di root ckage @ComponentScan("com.mypackage")

Si consiglia di disporre di un pacchetto di base i.e com.mypackage. E all'interno di questi pacchetti, hai i tuoi sotto-pacchetti. Hai lezione contenente il @SpringBootApplication in quel pacchetto di base.

+0

Farò come hai detto pacchetto padre con i pacchetti di classe config e sub con il mio codice app. Grazie. – zaqpiotr

4

verifica della documentazione Primavera:

http://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/autoconfigure/SpringBootApplication.html

È possibile sostituire, con il @SpringBootApplication, i valori di default di scansione dei componenti. Hai solo bisogno di includere come parametri:

@SpringBootApplication(scanBasePackages = "entertainment")

o String array:

@SpringBootApplication(scanBasePackages = {"entertainment", "readinglist"})

0

ho avuto lo stesso problema e per risolverlo ho rinominato i miei pacchetti come questo.

"com.project"

lì si può inserire il vostro classe principale SpringBootAplication, quindi basta creare gli altri pacchetti che iniziano con "com.project"

"com.project. dao"

"com.project.controller"

Creazione di questa struttura di progetto secondario non è necessario utilizzare scanBasePackages nell'annotazione @SpringBootApplication, facendo in modo che la classe principale sia in grado di trovare ogni componente del progetto.

E se si sceglie di utilizzare scanBasePackages, ricordare che è necessario impostare tutti i pacchetti di componenti in questo modo.

@SpringBootApplication (scanBasePackages = { "com.project.dao", "com.project.controller"})