2016-12-25 15 views
8

Ich bin ziemlich neu zu Spring Boot Application. Ich wollte verstehen, wie eine Spring-Boot-Anwendung Beans ohne @Configuration-Klasse erstellt. Ich habe mir ein Beispielprojekt angesehen, in dem weder @Bean-Definitionen noch ein Komponenten-Scan vorhanden waren. @Autowired lieferte die Abhängigkeit zur Klasse. Bitte haben Sie einen Blick auf das Snippet unten:Spring Boot-Anwendung

@RestController 
public class RestController{ 

**@Autowired 
public CertificationService certificationService;** 
. 
. 
. 
. 
} 

//Interface 

public interface CertificationService{ 

public List<Certification> findAll(); 

} 

//Implementation Class 
@Transactional 
@Service 

public class CertificationServiceImpl{ 

public List<Certification> findAll(){ 
. 
. 
} 

} 

Meine begrenzte Kenntnis von Federn sagt mir, dass, wenn es eine @Service Anmerkung über eine Klasse ist, gibt es eine @ComponentScan sein muss irgendwo die Bohne zu erstellen. Aber ohne einen Komponentenscan, wie wird die Bean CertificationServiceImpl erstellt und wie funktioniert das Autowirting von CertificationService in RestController hier?

Antwort

7

Wie said in Dokumentation:

... Die @SpringBootApplication Anmerkung entspricht der Verwendung von @Configuration, @EnableAutoConfiguration und @ComponentScan ...

Lassen Sie sagen, Sie Frühlings-Boot-App-Klasse etwas wie :

package com.mypackage; 

import org.springframework.boot.SpringApplication;  
import org.springframework.boot.autoconfigure.SpringBootApplication; 

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

Dann Alle Pakete unterhalb des Pakets com.mypackage werden standardmäßig für Spring-Komponenten gescannt. Übrigens können Sie die zu scannenden Pakete direkt in @SpringBootApplication Annotation angeben, ohne @ComponentScan zu verwenden. Mehr Details here.

+0

Vielen Dank, Ken Bekov. – Chandan

Verwandte Themen