一、准备工作
- 新建 tx.xml 文件定义含有两个bean信息的配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--
bean标签:让spring创建一个对象并放置在IOC容器内,一个bean标签就对应某个类的一个对象
属性:
id: 该bean对象的唯一标识符,bean的名称,不能重复的
class: 需要创建对象的类型的全限定名,Spring通过反射机制创建该类的对象(要求:该类必须拥有无参构造方法)
-->
<bean id="a" class="com.yanferr.Cat">
<property name="name" value="TomCat"></property>
</bean>
<bean id="b" class="com.yanferr.Dog">
<property name="name" value="JamDog"></property>
</bean>
</beans>
- 测试类中加载配置文件,从spring容器中获取bean
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("tx.xml");
Cat bean = context.getBean(Cat.class);
}
- 接下来就是debug整个流程所用到的重点方法以及介绍
- 下图为对context.getBean(Cat.class); debug过程中springIOC的执行方法
- 最后是AOP相关的方法,可以从下图看出spring中是用到了cglib和jdk两种方式来实现动态代理的