2016-12-25 17 views
8

Jestem całkiem nowy w Spring Boot Application. Chciałem zrozumieć, w jaki sposób Spring Boot Application tworzy fasole bez klasy @Configuration. Spojrzałem na przykładowy projekt, w którym nie było ani definicji @Bean, ani skanowania komponentu. @Autowired dostarczył zależność od klasy. Proszę spojrzeć na poniższym fragmencie:Spring Boot Application

@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(){ 
. 
. 
} 

} 

Moja ograniczona wiedza sprężyn mówi mi, że gdy istnieje adnotacja @Service nad klasą, nie musi być @ComponentScan gdzieś stworzyć Bean. Ale bez skanowania komponentów, w jaki sposób tworzony jest komponent CertificationServiceImpl i w jaki sposób działa tutaj automatyczne programowanie usługi CertificationService w programie RestController?

Odpowiedz

7

Jak said w dokumentacji:

... The @SpringBootApplication adnotacja jest równoważne użyciu @Configuration, @EnableAutoConfiguration i @ComponentScan ...

powiedzmy masz Wiosna Boot app klasa coś podobnego :

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);  
    }  
} 

Następnie wszystkie pakiety poniżej pakietu com.mypackage będą domyślnie skanowane pod kątem komponentów Spring. Przy okazji można określić pakiety do skanowania bezpośrednio w adnotacji @SpringBootApplication, bez korzystania z @ComponentScan. Więcej szczegółów here.

+0

Wielkie dzięki, Ken Bekov. – Chandan