Default olarak Spring Boot, bileşen taramaya Spring Boot uygulamamızdaki ana paketten başlar. Ayrıca bu paketin altındaki paketleri de recursive olarak tarar herhangi bir component var mı yok mu diye. Bu bizim için implicit bir şekilde tarama olduğundan dolayı explicit yani Spring Boot'un taramasını istediğimiz hangi package'leri açıkça belirtmemize gerek yoktur şöyle ki varsayalım bizim paket ismimiz:

net.mintercoder.project -> otomatik olarak Spring Boot bunun altındaki ve ekstra alt-paketlerin de altında bulunan bütün Component'leri arayıp bulacaktır.

Eğer ki biz diğer package'lerin de isimlerini vermek istersek; Örnek paket ismimiz

com.redteam.project

org.netbeans

Bunları da belirtmemiz gerekiyor.

Uygulamamızı başlatan @SpringBootApplication annotationuna sahip olan class'a gidip:

@SpringBootApplication(
        scanBasePackages = {
            "net.mintercoder.project",
            "org.netbeans",
            "com.redteam.project"
        }
)


şeklinde paketlermizi explicit bir şekilde declare etmemiz gerek.

ProjectApplication.java


package net.mintercoder.project;
 
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
 
@SpringBootApplication(
        scanBasePackages = {
            "net.mintercoder.project",
            "org.netbeans",
            "com.redteam.project"
        }
)
public class ProjectApplication {
    public static void main(String[] args) {
        SpringApplication.run(ProjectApplication.class, args);
    }
}


ComponentScanningRestController.java


package com.redteam.project;
 
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
 
@RestController
public class ComponentScanningRestController {
    @RequestMapping(path="/component/scanning",method=RequestMethod.GET)
    public String getComponentScan(){
        return "Tarandı";
    }
}