# lagou_module2_spring **Repository Path**: yangguihu/lagou_module2_spring ## Basic Information - **Project Name**: lagou_module2_spring - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-01-12 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 1.@Service 和@Autowired 注解说明 ![输入图片说明](https://images.gitee.com/uploads/images/2020/0112/174619_43375dac_5560712.png "image-20200112165918968.png") 说明: BeanFactory 的静态代码块中读取xml配置要扫描的包,将包下的类上面打了自定义注解@Service的类实列化放入 map 中备用。接着进行依赖注入,扫描字段上打了@Autowired 和@Qualifier 注解的字段,并根据名称或类型进行注入。 # 2.@Transactional和事务管理说明 ![输入图片说明](https://images.gitee.com/uploads/images/2020/0112/174731_588b22f8_5560712.png "image-20200112171439030.png") ![输入图片说明](https://images.gitee.com/uploads/images/2020/0112/174805_7d4c34b6_5560712.png "image-20200112171518273.png") 说明: 1. BeanFactory 的静态代码块中创建对象和依赖注入之后,扫描类上或者方法上打了@Transactional注解的类 ;并判断该类是否有接口,有接口使用jdk动态代理创建代理对象,没有实现接口的使用cglib创建代理对象,创建的代理对象放入 BeanFactory 类中的 proxyMap 中供后续调用。 ![输入图片说明](https://images.gitee.com/uploads/images/2020/0112/174823_ab1c060c_5560712.png "image-20200112171634237.png") 2. TransferServlet中使用调用 BeanFactory.getBean(id)获取对象,该方法中会判断是否返回代理对象还是原始对象。真正执行业务方法时,如果是代理对象,会调用代理的代码进行事务管理。