注入具有作用域prototype
的bean@Autowired
通常不会按预期工作。但是在写代码的时候,很容易不小心注入原型。
有没有办法获取所有@Autowired
字段和方法的列表并将其与 Spring AppContext 匹配以检查这一点?
注入具有作用域prototype
的bean@Autowired
通常不会按预期工作。但是在写代码的时候,很容易不小心注入原型。
有没有办法获取所有@Autowired
字段和方法的列表并将其与 Spring AppContext 匹配以检查这一点?
一种方法可能是覆盖org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor
(负责处理@Autowired、@Inject、@Resource 等)并执行您在此覆盖的 bean 后处理器中提到的检查。但是,AutowiredAnnotationBeanPostProcessor 注册了很多常见的自定义命名空间(context:component-scan
等context:annotation-config
),因此这些自定义注释必须替换为相应的bean
变体,并且覆盖的后处理器也注册为 bean。