@Autowired 注释,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。 通过 @Autowired的使用来消除 set ,get方法。
试想,@Autowired 为什么能完成自动装配呢?
当 Spring 容器启动时,Spring容器扫描com.taotao.service包中所有的类,当发现寻找标注了@Component、@Repository、@Service、@Controller注解的类,并把这些类纳入进spring容器中管理。
AutowiredAnnotationBeanPostProcessor 将扫描 Spring 容器中所有 Bean,当发现 Bean 中拥有 @Autowired 注释时就找到和其匹配(默认按类型匹配)的 Bean,并注入到对应的地方中去。 就完成了ItemService的自动装配。
同样道理
要完成TbItemMapper的自动装配,同样看看spring容器怎么把TbItemMapper注入到容器的,
这是mybatis自动生成的Mapper接口。
mybatis-spring提供了MapperScannerConfigurer这个类,它将会查找类路径下的映射器并自动将它们创建成MapperFactoryBean。
这段配置会扫描com.taotao.mapper包下的所有接口,然后创建各自接口的动态代理类。