滴水穿石
Spring 的概念就不要说了,这只是复习
1. IOC容器
ApplicationContext ctx = new ClassPathXmlApplicationContext("bean-autowire.xml");
ApplicationContext 就是IOC容器,可以这么理解
IOC容器从哪里加载?一般都使用上述方式,从配置文件中加载
ClassPath 应该不用说了,就是项目的src 目录下
2.bean的配置
2.1 属性配置
<bean id="address" class="com.cfb.learn.domain.Address">
<property name="city" value="BeiJing"></property>
<property name="street" value="XiZHiMen"></property>
</bean>
2.2 构造器配置
<bean id="car" class="com.cfb.learn.domain.Car"><!-- p:name="Falali" p:price="300000.25" -->
<constructor-arg name="name" value="Falali"></constructor-arg>
<constructor-arg name="price" value="300000.25"></constructor-arg>
</bean>
2.3 命名空间、命名引用、自动装配
<bean id="person" class="com.cfb.learn.domain.Person" p:name="XiaoMing" p:address-ref="address" autowire="byName"></bean>
byName: 根据bean的名字及bean的setter风格的属性名进行自动装配,若有匹配则自动装配,没有则不装配
byType:
一般不使用自动装配,不是那么灵活
结果:
Person [name=XiaoMing, address=Address [city=BeiJing, street=XiZHiMen], car=Car [name=Falali, price=300000.25]]
2.4 bean配置的继承
<bean id="address" class="com.cfb.learn.domain.Address" p:city="BeiJing……" p:street="XiZHiMen"></bean> <bean id="address2" class="com.cfb.learn.domain.Address" p:city="BeiJing" parent="address"></bean>
父类可以 声明为抽象的类 abstract="true"
抽象的类可以没有 class ,但是没有 class 必须为抽象类,这样可以作为模板使用
2.5 bean 之间的依赖关系
depend-on
可以通过depend-on 设置 bean 的前置依赖
IOC容器初始化的时候,会在Bean初始化之前先实例化依赖的bean
—————————————————————————————————————————————————————————————————————————
无论如何,心平气和