2016-12-25 12 views
8

私は春のブートアプリケーションのかなり新しいです。私は春のブートアプリケーションが@ConfigurationクラスなしでBeanを作成する方法を理解したかったのです。 @Bean定義もコンポーネントスキャンもなく、@Autowiredがクラスへの依存関係を提供していたサンプルプロジェクトを見てきました。以下のスニペットを見てください:春のブートアプリケーション

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

} 

スプリングの私の限られた知識は、クラスを超える@Service注釈がある場合に、Beanを作成するために、どこか@ComponentScanが存在しなければならないことを私に伝えます。しかし、コンポーネントスキャンがないと、どのようにCertificationServiceImpl Beanが作成され、RestControllerのCertificationServiceのautowiringがここで動作しますか?

答えて

7

ドキュメントのsaid通り:

... @SpringBootApplication注釈が

レッツは、あなたのような春ブーツアプリクラスの何かを持っていると言う... @Configuration@EnableAutoConfiguration@ComponentScanを使用するのと同じです:

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

次にパッケージcom.mypackageの下にあるすべてのパッケージは、デフォルトでSpringコンポーネントに対してスキャンされます。ちなみに、@ComponentScanを使わずに、@SpringBootApplication注釈でスキャンするパッケージを指定することができます。詳細here

+0

ありがとう、Ken Bekov。 – Chandan

関連する問題