• 学斌
    2020-03-27
    10分07秒,小马哥所说的:”那么实际上应用是先执行子类后执行父类“这个是不对的吧。在CommonAnnotationBeanPostProcessor递归查找中,插入到最终的injectedElements是elements.addAll(0, currElements);。 所以应该是先父类,后子类。执行AnnotationDependencySetterInjectionDemo验证: User Bean [user] 初始化... User Bean [superUser] 初始化...

    作者回复: 感谢指出错误,的确如你说描述

    
    10
  • 周治慧
    2020-03-10
    总结:就比如common和autowired执行时,common优先级比autowired要高,order值更小即common是order=integer.max_value-3 autowired=integer.max_value-2 common的invoke方法在autowired invoke方法之前执行

    作者回复: 认真 100 分~

    
    9
  • How
    2020-02-24
    大家可能对spring的Order有些误解,数值越大代表优先级越低, 最高优先级int HIGHEST_PRECEDENCE = -2147483648; 最低优先级int LOWEST_PRECEDENCE = 2147483647;

    作者回复: 是的,确实是由 @Order 或者 Ordered 接口中定义的数值来影响的~

    共 2 条评论
    8
  • 泡一碗老坛🍲
    2020-05-06
    硬听得话,可以跟上,但是来来回回跳转,太乱了

    作者回复: 源码分析通常更需要记忆,建议多看几遍~

    
    1
  • 大大大熊myeh
    2020-03-02
    小马哥所说的“优先级比较高,invoke方法反而会在后面调用”,是指order指定的数值越高,invoke会越晚调用吧?从语义上来理解应该就是:优先级越低(order数值越高),invoke方法会在后面调用。

    作者回复: 是的,值得 @Order 标注类 或者 Ordered 实现类

    
    1
  • 宋文杰
    2021-10-27
    小马哥666

    作者回复: 基操勿6,哈哈

    
    
  • fullmoon
    2020-12-24
    小马哥,所以 @Autowired 和 @Resource 两个注解的处理方式本质上没有区别且注入时机也是相同的?

    作者回复: 它们处理的先后略有差别,其他差异不大

    
    
  • neeham
    2020-10-05
    common的在autowire之前执行,那PostConstruct里面可以使用autowire的对象

    作者回复: 666

    共 7 条评论
    
  • 胡楚坚
    2020-02-21
    小马哥12分10秒那句“优先级比较高的话,invoke方法反而会在后面调用”,其实是想说:优先级常量的真实数字值越大,其invoke反而会在后面调用。 还是有什么其他意思?

    作者回复: 没有其他意思,优先级通过可以通过 @Order 或者 Ordered 接口来定义,具体是通过数值来表现,诚如你说“优先级常量的真实数字值越大,其invoke反而会在后面调用”

    共 3 条评论
    
  • 胡楚坚
    2020-02-21
    小马哥,12分10秒,那句“如果优先级比较高,invoke方法反而会在后面调用”想不明白额,优先级越高不是越先执行吗

    作者回复: Spring 里面的 Ordered 数值定义是反的,可以参考一下源码中的定义

    
    