1.Spring 的IOC操作
IOC操作有两部分 ,一是IOC的配置文件方式,二是IOC的注解方式
2.IOC的原理
1)创建xml配置文件,配置要创建对象的类<bean id="" class="" ></bean> //class中为类的全路径
2) 创建工厂类,使用dom4j 解析配置文件+反射(不需自己完成工厂类 )
使用dom4j解析配置文件,然后根据id值,得到id值对应的class属性值 String classValue = “class属性值”;
使用反射创建类对象
Class clazz = Class.forName(classValue);
UserVervice service = clazz.newInstance(); return service;
降低了类之间的耦合度,类名改了,只需要更改配置文件中路径就可以
3.IOC入门
步骤 1)导入工程需要的jar包(通过maven可以获得)
步骤2)编写类 ,在类中写入方法
步骤3)创建spring 配置文件,配置创建类
步骤4)测试,创建测试类 (加载配置文件的方法:ApplicationContext context = new ClassPathXmlApplicationContext("配置文件路径+名称"); )
通过配置文件中的id获得对象 User user = (User) context.getBean("id");
4.Bean 的三种实例化的方法(2,3一般不使用)
1)使用类的无参数构造创建(重点)
<bean id = "" class="类的全路径"></bean>
2)使用静态工程方法,在类中有一个返回对象的静态方法
<bean id="" class ="" factory-method = ""></bean>\
3)使用实例方法
<bean id = "a" class = "" /> <bean id = "a1" factory-bean = "a" factory-method = "实例方法" />
5.bean标签的常用属性
1)id 属性 :名称,任意命名,不能包含特殊字符,根据id配置对象
2)class属性:创建对象的所在类的全路径
3)name属性:功能和id 属性一样,id不能有特殊字符,name属性可以有,一般都用id,name在struts1 中还使用
4)scope属性:singleton (默认属性,)单例,只创建一次 prototype (多例,每次创建都是一个新的对象)
6.属性注入
1)set方法注入(重点) 类中有属性的set方法
<bean id ="" class = "" > <property name="属性名' value= " 设置的值" /> </bean> (property 可以有多个)
2)构造方法注入
<bean id = "" class = "" ><constructor-org name=" 属性名" value = "属性值 " /> </bean>
7.对象属性的注入
将一个类作为另一个类是字段属性值,生成其set方法
public class Service {
public Dao dao;
public void setDao(Dao dao){
this.dao = dao;
}
}
<bean id = "Dao" class = " " />
<bean id="Service" class ="" >
<property name= " dao" ref="Dao" > //ref 中写的是上面bean的id属性,name是Service中的属性名称
</bean>
8.P名称空间注入
首先引入 P 名称空间
xmlns:p = "http://www.springframework.org/schema/p"
<bean id="" class ="" p:属性名 = "值">
9.复杂类型的属性注入
1)数组
<bean id ="' class ="'>
<property name="">
<list> <value>值</value>(value可以有多个) </list>
</property>
</bean>
2)list 集合
<bean id ="" class ="'>
<property name ="">
<list><value>值</value>(value可以有多个)</list>
</property>
</bean>
3) Map类型
<property>
<map>
<entry key=" 键" value = "值 "></entry>(entry可以有多个)
</map>
</property>
4)properties 类型
<property>
<props><prop key =""> 值</prop>(prop可以有多个)</props>
</property>
10.IOC和DI的区别
1)IOC:控制反转,把对象交给Spring配置文件配置
2)DI:依赖注入,向类里面的属性设置值
3)联系:依赖注入不能单独存在,需要在IOC的基础上完成