2015-05-24 12 views
5

Ich bin eine Feder Boot-Anwendung zu entwickeln, die einige Spring Data Repository-Schnittstellen verwendet:Frühling Boot finden auf einem anderen Paket autowired

package test; 
@SpringBootApplication 
public class Application implements CommandLineRunner { 

    @Autowired 
    private BookRepository repository; 
    . . . 
} 

ich, dass die BookRepository Schnittstelle sehen kann (die hier folgt) nur, wenn injiziert werden es ist im selben Paket wie die Klasse Anwendung:

package test; 
public interface BookRepository extends MongoRepository<Book, String> { 

    public Book findByTitle(String title); 
    public List<Book> findByType(String type); 
    public List<Book> findByAuthor(String author); 

} 

gibt es eine Frühlings-Boot-Annotation mich auf meinen Klassen anwenden zu können, die BookRepository in einem anderen Paket finden?

Antwort

13

Verwenden Sie eine @ComponentScan Anmerkung neben @SpringBootApplication und eine benutzerdefinierte Basispaket konfigurieren (Sie können entweder eine Liste von Paketnamen angeben oder eine Liste von Klassen, deren Paket verwendet), so zum Beispiel

@SpringBootApplication 
@ComponentScan(basePackages = {"otherpackage", "..."}) 
public class Application 

oder

@SpringBootApplication 
@ComponentScan(basePackageClasses = {otherpackage.MyClass.class, ...}) 
public class Application 

Beachten Sie, dass Komponentenscan Klassen innerhalb und unterhalb der angegebenen Pakete finden wird.

+0

Danke für Ihre Hilfe gehalten! – user2824073

+0

Eigentlich ist das veraltet. Sie können dies direkt auf @SpringBootApplication (scanBasePackages = {"...", ",,,"}) tun –

0

Es ist gut, die Gültigkeitsbereiche von Klassen in verschiedenen Paketen zu überprüfen, indem Sie die Annotation @ComponentScan in der benutzerdefinierten Spring Boot-Startup-Klasse verwenden.

Fügen Sie auch @Component in modalen Klassen hinzu, die verwendet werden, um dem Framework den Zugriff auf die Klassen zu ermöglichen.

Beispiel bei http://www.javarticles.com/2016/01/spring-componentscan-annotation-example.html

Verwandte Themen