【问题标题】:Spring Boot Autowired support for CrudRepositorySpring Boot Autowired 对 CrudRepository 的支持
【发布时间】:2016-11-28 14:14:28
【问题描述】:

一旦 JPA 实体全部设置完毕,Spring Boot CrudRepository 接口似乎对我很有帮助。我有一种情况,我想根据需要创建这些 CrudRepository 实例,而不是总是基于 @Autowired 注释。例如,在我的用例中,我有一个 GUI 菜单,其中包含域(或引用)表名列表。根据用户的选择,程序将实例化这些 CrudRepository 实现之一。

如果我使用@Autowired,那么我不必在我的代码中得到所有可能的已知实现吗?

一个假设的用例:

public interface PublisherRepository extends CrudRepository<Publisher, Long> {
}

public interface AuthorRepository extends CrudRepository<Author, Long> {
}

(我才意识到我仍然必须创建这些实体。)

在GUI菜单中,会有“Publisher”、“Author”等,我喜欢根据上面的repository接口来创建GUI维护组件。将@Autowired 如下放置或仅动态创建它们是一个好习惯吗?

@Autowired
PublisherRepository publisherRepo;

@Autowired
AuthorRepository authorRepo;

如果有办法创建这些 repo 实例,请教我在 Spring Boot 中是如何做到的?非常感谢提前分享专业知识!

此致,

学生_t

【问题讨论】:

  • 你真的需要他们偷懒吗?我认为这不会为您节省一些额外的时间。

标签: java spring spring-boot spring-data-jpa


【解决方案1】:

通常,bean 是急切地创建的,所以 @Autowiring 不使用 bean 不是问题。无论如何,它们都会使用内存并消耗一些启动时间。

如果你真的不想自动装配,你可以@Autowire org.springframework.beans.factory.BeanFactory 并使用getBean 来获取所需的存储库。但这是一个可怕的想法。这会将您的 @Service 与 Spring 联系起来,并且(如果找不到您的存储库)您将获得迟到(在访问期间)运行时异常,而不是启动异常。

【讨论】:

  • 不,你没有。 Spring Data JPA 负责这一点。将该注释放在界面上也几乎没有用。
  • @M.Deinum 因此,如果您使用 Spring Data && Spring Boot,则不再需要注释 ;)(例如,@Configuration@EnableAutoConfiguration@EnableWebMvc@ComponentScan , @Repository--> 垃圾)
  • 这取决于....对于您自己的配置,您仍然需要@Configuration 很多可以/将自动配置。
猜你喜欢
  • 2017-07-04
  • 2016-07-01
  • 2021-04-10
  • 2015-03-19
  • 1970-01-01
  • 2022-12-23
  • 2017-10-01
  • 2019-02-25
  • 2014-12-15
相关资源
最近更新 更多