【问题标题】:Spring lookup method annotation overuseSpring查找方法注释过度使用
【发布时间】:2018-04-24 14:32:00
【问题描述】:

我正在研究一个代码库,其中每个 POJO 都由 spring 管理并使用查找 annotation 注入。

@Lookup
public Publisher getPublisher() {
    return new Publisher();
}

@Lookup
public Book getBook() {
    return new Book();
}

这些 Publisher 和 Book 对象只不过是带有 getter/setter 的 POJO。这些类是作为原型 bean 管理的。我在想,这是过度使用查找注释和开销,我们可以只使用工厂方法或简单地创建新实例。您认为对这个用例使用查找注释有用/高效吗?

【问题讨论】:

  • 为什么不把 Publisher 类注解为组件或服务,并在使用时自动装配呢?这是我给你的东西。 stackoverflow.com/questions/29239965/…
  • 我想你没有得到这个问题。 Publisher 实际上被注释为组件和原型范围。我要求对 POJO 这样做并且使用 @Lookup 是矫枉过正。
  • 我认为你可以放弃 Lookup n 在你的 Autowired 对象中使用 @Qualifier。

标签: java spring spring-boot


【解决方案1】:

一般来说,如果永远不需要这些 bean 来利用 Spring 特性,并且如果这些 bean 永远不会注入其他 bean 或永远不需要在它们的自己的实例。

@Lookup 是旧 XML lookup-method 属性的基于注释的方式。除了使用此注解创建的 bean 还具有多个限制。对于新项目,我从不使用它。
作为您需要在 java 类中声明 bean 的替代方案,通常应该优先使用创建“不受限制”bean 的 @Bean 注释。

编辑:

I wrote an answer 昨天回答了一个非常相关的问题:Spring - is using new a bad practice?
我刚刚将其更新为更详尽。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-30
    • 2013-01-08
    • 1970-01-01
    • 2014-11-18
    • 1970-01-01
    • 1970-01-01
    • 2013-10-07
    • 1970-01-01
    相关资源
    最近更新 更多