2015-05-24 16 views
5

Zajmuję się tworzeniem aplikacji Boot sprężynę, która wykorzystuje niektóre interfejsy repozytorium za Wiosna danych:Wiosna bagażnika znaleźć autowired na innym opakowaniu

package test; 
@SpringBootApplication 
public class Application implements CommandLineRunner { 

    @Autowired 
    private BookRepository repository; 
    . . . 
} 

widzę, że interfejs BookRepository (co wynika tutaj) można wstrzykiwać tylko jeśli to w tym samym pakiecie co klasa aplikacji:

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

} 

Czy istnieje Wiosna Boot adnotacja mogę stosować na moich zajęciach, aby móc znaleźć BookRepository w innym opakowaniu?

Odpowiedz

13

Użyj @ComponentScan adnotacji obok @SpringBootApplication i skonfigurować pakiet niestandardowej bazy (można też określić listę nazw pakietów lub listę klas, której pakiet będzie używany), a więc na przykład

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

lub

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

Należy pamiętać, że skanowanie komponentów pozwala znaleźć klasy wewnątrz i pod podanymi pakietami.

+0

dzięki za pomoc! – user2824073

+0

W rzeczywistości jest to nieaktualne. Możesz to zrobić bezpośrednio na @SpringBootApplication (scanBasePackages = {"...", ",,,"}) –

Powiązane problemy