代码简化如下:Fat注入自己是因为想让domain的声明式事务不失效,但是居然默认拿到的是SUB的实例,这是为什么呢,默认不应该是按照属性名装配么?求解答
虽然可以通过@Qualifier 或者@Primary 可以避免
Controller:
@RestController
public class Test{
@Autowired
private Fat fat; //注入父类,没问题
@PostMapping("/test/autowried")
public void test(){
fat.test();
}
}
@Service
public class Fat{
@Autowired
private Fat fat; //为什么注入的是子类?
public void test(){
fat.domian();
}
@Transactional
public void domian(){
System.out.println("老子");
}
}
@Service("sub")
public class Sub extends Fat{
@Override
public void domian() {
super.domian();
System.out.println("小子");
}
}