Mybatis 或者 dubbo 或者 feign 这些 东西 都是 你定义一个接口 然后就能 使用一个具体的bean(对象) 那么 你完全没有做任何事情(你的业务代码) 那是怎么去根据你定义的接口 你还能 依赖注入一个bean进去 还能调用的呢 面试的时候 一般 问 都是 一概而论的说一句 生成一个代理对象 那是怎么生成的呢 这一点 我今天记录一下 首先要弄清楚 spring的加载与生成bean的机制 spring在启动的时候 会 扫描 所有定义的 bean的类 并定义BeanDefinition 然后通过BeanDefinition 在调用creataBean方法的时候会 去实例 初始