Spring boot find autowired on another package
Spring boot find autowired on another package
我正在开发一个 Spring 启动应用程序,它使用一些 Spring 数据存储库接口:
package test;
@SpringBootApplication
public class Application implements CommandLineRunner {
@Autowired
private BookRepository repository;
. . .
}
我可以看到 BookRepository 接口(如下所示)只有在与应用程序位于同一包中时才能注入 class:
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 引导注释可以应用到我的 classes 上以便能够在另一个包中找到 BookRepository?
使用 Spring @ComponentScan annotation alongside the SpringBoot @SpringBootApplication 并配置自定义基础包(您可以指定包名称列表或 类 将使用其包的列表),因此例如
@SpringBootApplication
@ComponentScan(basePackages = {"otherpackage", "..."})
public class Application
或
@SpringBootApplication
@ComponentScan(basePackageClasses = {otherpackage.MyClass.class, ...})
public class Application
或者自Spring 1.3.0(2016年12月)起,您可以直接写:
@SpringBootApplication(scanBasePackageClasses = {otherpackage.MyClass.class, ...})
public class Application
请注意,组件扫描将在给定包的内部和下方找到 类。
通过在 Spring 引导启动自定义 class.
中使用 @ComponentScan 注释,可以很好地验证 classes 保存在不同包中的范围
还在模态 classes 中添加 @Component 以允许框架访问 classes。
示例保存在
http://www.javarticles.com/2016/01/spring-componentscan-annotation-example.html
我正在开发一个 Spring 启动应用程序,它使用一些 Spring 数据存储库接口:
package test;
@SpringBootApplication
public class Application implements CommandLineRunner {
@Autowired
private BookRepository repository;
. . .
}
我可以看到 BookRepository 接口(如下所示)只有在与应用程序位于同一包中时才能注入 class:
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 引导注释可以应用到我的 classes 上以便能够在另一个包中找到 BookRepository?
使用 Spring @ComponentScan annotation alongside the SpringBoot @SpringBootApplication 并配置自定义基础包(您可以指定包名称列表或 类 将使用其包的列表),因此例如
@SpringBootApplication
@ComponentScan(basePackages = {"otherpackage", "..."})
public class Application
或
@SpringBootApplication
@ComponentScan(basePackageClasses = {otherpackage.MyClass.class, ...})
public class Application
或者自Spring 1.3.0(2016年12月)起,您可以直接写:
@SpringBootApplication(scanBasePackageClasses = {otherpackage.MyClass.class, ...})
public class Application
请注意,组件扫描将在给定包的内部和下方找到 类。
通过在 Spring 引导启动自定义 class.
中使用 @ComponentScan 注释,可以很好地验证 classes 保存在不同包中的范围还在模态 classes 中添加 @Component 以允许框架访问 classes。
示例保存在 http://www.javarticles.com/2016/01/spring-componentscan-annotation-example.html