recherche

Maison  >  Questions et réponses  >  le corps du texte

java - Spring 依赖注入优先级问题

问题的业务场景

1.开发一个dubbo的provider服务,采用的是零配置方式,所有的配置都是以java类的形式通过注解加载。
2.目前配置分为
    a).Hibernate
    b).Dubbo
    c).AOP
    d).Thread
    e).Redis
    然后由总配置类LaunchConfig导入统一加载(这个加载有商榷,我也不确定是否在导入之前就已经被spring注入).

    
3.用到的相关spring注解有:
    @Configuration
    @ComponentScan
    @Import
    @PropertySource
    @Autowired
    @Component

问题描述

1.如上图所示,我按照顺序写了配置了,通过日志输出我确定了确实是按照顺序加载。问题是,我的某一个配置类中依赖了一个spring管理的JavaBean,它是通过@Component注解的,这边出现了一个状况就是,初始化这些配置类的时候,这个被spring管理的JavaBean好像还没有被注入进去。
2.我想问的是,Spring的依赖注入是否有优先级,如果有这个级别是如何算的,是否可以手动指定或者调整,其次就是,虽然Spring的依赖注入可以通过多个注解来实现,但是这些注解本身是否有先后的顺序,比如,@Component比@Service的加载顺序要优先
3.其实这个写法我在以前的项目使用过,那会没有问题,可能不是顺序的问题,但是我排查下来,目前认为问题在这里,当然技术水平决定了我的眼界,所以还请有经验的同学,帮忙看看,顺带指点一下。
高洛峰高洛峰2887 Il y a quelques jours396

répondre à tous(1)je répondrai

  • PHP中文网

    PHP中文网2017-04-17 17:58:02

    Concernant la question 2, @Service est un raffinement de @Component, et je n'ai vu aucune différence de priorité entre eux dans la documentation officielle. De plus, l'injection de dépendances de Spring peut être séquentielle. Par exemple, si BeanA doit être instancié avant BeanB, vous pouvez envisager d'utiliser l'attribut depend-on dans BeanB afin que BeanA soit instancié avant BeanB.

    répondre
    0
  • Annulerrépondre