spring-boot - Spring Boot 发现在另一个包上 Autowiring

标签 spring-boot

我正在开发一个使用一些 Spring Data Repository 接口(interface)的 Spring Boot 应用程序:

package test;
@SpringBootApplication
public class Application implements CommandLineRunner {

    @Autowired
    private  BookRepository repository;
    . . .
}

我可以看到 BookRepository 接口(interface)(如下所示)只有在与 Application 类位于同一包中时才能注入(inject):
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);

}

我可以在我的类上应用任何 Spring Boot 注释以便能够在另一个包中找到 BookRepository 吗?

最佳答案

使用 Spring @ComponentScan SpringBoot 旁边的注释 @SpringBootApplication并配置自定义基础包(您可以指定包名称列表或将使用其包的类列表),例如

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

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

或因为 Spring 1.3.0 (Dec. 2016),你可以直接写:
@SpringBootApplication(scanBasePackageClasses = {otherpackage.MyClass.class, ...})
public class Application

请注意,组件扫描将在给定包的内部和下方找到类。

关于spring-boot - Spring Boot 发现在另一个包上 Autowiring ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30425016/

相关文章:

java - 由于缺少 bean,Web 服务器无法启动

java - 在 Spring JPA 中避免 SQL 注入(inject)

spring-boot - 实体类名转换为带下划线的SQL表名

java - 卡夫卡给 : "The group member needs to have a valid member id before actually entering a consumer group"

java - 数据未持久保存到数据库并在控制台中显示空指针异常

mysql - 如何使用 Spring Boot 从属性文件中获取静态最终属性

java - Whitelabel错误页面部署到服务器后出现错误

java - Hibernate搜索: Elasticsearch transport thread-3"java. lang.OutOfMemoryError:

java - RedisTemplate 在 Spring Boot 中无法获取数据

java - Spring 启动 + SSL : Consuming Too much CPU