@Autowired和@Required抛出异常

时间:2014-07-16 10:41:26

标签: spring

我读到如果容器找不到依赖注入的bean,则@Required注释抛出此异常: org.springframework.beans.factory.BeanInitializationException

对于@Autowired,例外是:org.springframework.beans.factory.BeanCreationException

考虑这些情况: 我在bean A中使用@Required来注入另一个不存在的bean B,然后启动应用程序。 我在bean A中使用@Autowired来注入另一个不存在的bean B,然后启动应用程序。

我想知道什么时候抛出@Required和@Autowired的异常?是在同一时间吗?加载spring应用程序上下文时?

1 个答案:

答案 0 :(得分:2)

Spring使用@RequiredRequiredAnnotationBeanPostProcessor@Autowired处理

AutowiredAnnotationBeanPostProcessor注释。根据源代码herehere,这两个后处理器都是有序的。 @Autowired的顺序为Integer.MAX_VALUE - 2,而@Required的顺序为Integer.MAX_VALUE - 1。根据{{​​3}},值越高优先级越高。

基于此,我相信@Autowired bean post处理器将在@Required之前运行。因此,为了回答您的问题,@Autowired的可能异常将在创建spring应用程序上下文时@Required之前抛出。