当前位置: 首页 > 面试题库 >

使用@Lookup方法的Spring @Bean

羊时铭
2023-03-14
问题内容

我注意到一种奇怪的行为,我不确定这是设计使然还是我自己的误解。Spring将在以ComponentScan标记的@ Service,@
Component等注释的Bean中实现@Lookup方法,但不会在@Configuration类(Application.java)中定义的@Bean中实现这种方法。

这不是什么大问题,因为我可以从配置中删除@Bean定义,而直接对其类进行注释。但我想知道此行为是否记录在某处,还是我实施不正确?

@Bean
public Service getService() {
    // ServiceImpl has a @Lookup method,
    // but Spring does not implement it unless the class itself is annotated.
    return new ServiceImpl();
}

问题答案:

实际上,此行为 @Lookup注释的限制。Spring 文档的最新版本比4.1版本更清楚地描述了警告。

…请记住,查找方法不适用于从@Bean配置类中的方法返回的bean ;

通常,从@Bean方法返回的对象 确实 要处理其注释。@Lookup是典型行为的例外。



 类似资料:
  • 问题内容: 我需要从单例中获取原型类。我发现方法注入是可行的方法,但是我真的不知道如何使用spring @Lookup注释。 我是依赖注入的新手,我选择了注释配置,因此我想朝着这个方向继续。 我发现@Lookup注释是最近才添加的(https://spring.io/blog/2014/09/04/spring- framework-4-1-ga-is-here ),但是我找不到任何方法用它。 所

  • wend尝试此查询,返回查找为空 返回json 我尝试了这篇文章,但没有发生MongoDB将项目字符串聚合到ObjectId和这个MongoDB$lookup在PHP中使用_id作为foreignField 更新 这是文档“用户”

  • 我试图使用Kotlin+IntelliJ学习一些spring的基础知识,但我遇到了一些麻烦。@RequestMapping带注释的方法(带有参数)会导致异常,而Java等效方法工作得非常好。Kotlin代码工作良好,但只是没有“processFormTwo”方法(将工作的Java代码转换为Kotlin也没有帮助)。 servletException:servlet调度器的servlet.init(

  • 是否有方法使用Spring AOP记录Spring Framework类下方法的进入和退出? 例如: 我希望在类中记录 的退出和退出 我尝试了以下操作。但没有运气:( 但我最终遇到了bean创建异常。

  • 我的springboot控制器中有@async方法,它调用service method(async)并执行一些DB事务。当这个控制器@async方法被多次调用而没有时间延迟时,它会导致org.hibernate.exception.JDBCConnectionException:无法获取JDBC连接 控制器 服务 然后调用同一服务类中的sendSingleMessage方法,其中调用NOT跨国方法

  • 我正在使用spring AOP拦截这些方法。我在spring配置文件中有以下配置。 方面类: 上面的方法不拦截私有方法?要求方面既拦截私有方法,又拦截公有方法,怎么办?