这里只写我遇到的问题
1、属性访问修饰符问题
java
@Autowired
protected Service service;
因为对象为protected,然后注入失败,service为null,所以会调用报错,应改为private。
无论是构造器注入,还是set方法注入 一样也适用。
2、方法访问修饰符问题
java
@GetMapping("method")
private Response method() {}
因为方法为private 导致代理对象无法成功转发到目标对象,应改为public。
上面两种情况都会让service为null 一个是因为目标对象service为null,一个是调用到代理对象上的service,这个service本身就是null。
结论:总结来说,接口调用之所以能成功,是因为 方法调用 触动了代理的拦截器,从而将执行权转移到了持有真实数据的 目标对象 上。而字段访问失败,正是因为这个操作绕过了整个拦截和转发机制。