spring项目启动时,打了一个断点:@Bean修饰如图的jobManager时,该方法的参数List<Job> jobConfigurations,是怎么获取到Job的实现类的?是因为Job接口上添加了@Component注解?
接口上添加@Component就可以找到Job的所有实现类?
然后在@Bean实例化参数JobManager时,就会把Job的所有实现类作为参数传递给JobManagerImpl的构造方法?
是我这样理解的吗?
疑惑点:
① 为什么@Component可以写在接口上,是因为注入的是接口的实现类吗?我困惑的是:接口是不能实例化的
② 为什么在@Bean修饰的方法的参数上,接口的实现类都作为了参数传递?@Bean注解的实例化是在@Component注解之后实例化?
不一定是注解方式,但是肯定是声明了 bean
所有 Job 类型的 bean,不是所有实现类
没用
按照依赖顺序初始化