2016-05-10 22 views
0

私はSpring Bootに基づいてアプリケーションを書いたが、SpringBootが存在する同じパッケージにすべてのクラス(モデル、@ contControllerで注釈が付けられたcontoller)を置くと機能する。 私の質問は、これらのクラスが同じパッケージ内になければならない理由です。同じパッケージ内の@SpringBootApplication?

これは春ブーツのAppが注釈されている:これは@SpringBootApplication注釈のデフォルトの動作ですので

@RestController 
public class PersonController { 

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

あなたの知覚は少し異なります。スプリングブートはマルチモジュールアプリケーションでも機能します。AFAIK、コンフィグレーションが行われている限り – VinayVeluri

+0

私は知っていますが、なぜ@SpringBootApplicationとrestControllerで注釈付けされたクラスが同じパッケージで? 私はそれがスキャンコンポーネントのためだと思います。 – Moolerian

答えて

2

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

をこれは残りのコントローラです。より正確には、コンポーネントスキャンは、パッケージ内のすべての構成とコンポーネント、およびクラスのすべてのサブパッケージを注釈とともに検出します。あなたが他のパッケージにあなたのクラスを持っているしたい場合は、注釈の属性などのパッケージでそれらのパッケージまたはクラスを指定することができます。

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

春、その後クラスOneClassとAnotherClassのパッケージとサブパッケージをスキャンします。

+0

ありがとう、それは私の答えです。 – Moolerian

関連する問題