@Autowired 注解
Spring 中 @Autowired 注解默认根据类型来匹配 Bean ,如果上下文中存在一个以上匹配类型的 Bean ,Spring 将无法决定应该注入哪一个,并抛出异常。可以通过 @Qualifier
注解来进一步指定具体要注入哪个Bean。
@Autowired
@Qualifier("orderValidatorChain")
private OrderCreateValidator orderValidatorChain;
@Autowired
@Qualifier("orderConfirmValidatorChain")
private OrderCreateValidator orderConfirmValidatorChain;
但是如果 Spring 容器中的某个 Bean 的名字正好与你想要注入的字段名相匹配,那么 Spring 可以依据这个名称来选择正确的 Bean 进行注入。这种行为并不是标准的行为,它可能取决于具体的 Spring 版本和配置上下文。
run 方法和 start 方法的区别
创建好线程后,如果想要启动这个线程,则需要调用其 start() 方法。所以 start() 方法是启动一个线程的入口。
如果在创建好线程后,直接调用其 run() 方法,那么就会在单线程中直接运行 run() 方法,不会起到多线程的效果。
notify 和 notifyAll 的区别
当一个线程进入 WAITING 状态后,就必须等其他线程 notify() / notifyAll(),才会从等待队列中被移除。
使用 notifyAll(),可以唤醒所有处于 WAITING 状态的线程,使其重新进入锁的争夺队列中,而 notify() 只能唤醒一个。