IOC
控制反转:InversionOfControl
所谓控制反转,就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责,这样控制权就由应用转移到了外部容器,控制权的转移就是所谓的反转
使用步骤
操作工具
- eclipse
- spring tools
- maven
操作
- 使用eclipse建立maven工程
- 在工程的pom.xml 的源代码中,写入spring jar包坐标。spring官网
<!-- spring 框架 依赖 4.3.10版 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.10.RELEASE</version>
</dependency>
- 建立
加载配置文件,有三种方式,二种大类
- 延时加载
- 就是单你使用某个类时,这个类,才会被实例化,故此也被称之为,懒加载
- 及时加载
- 当配置文件,一加载,马上就把配置文件内的所有类都实例化
示例
//延时加载
BeanFactory beanfactory=new XmlBeanFactory(new ClassPathResource("applicationContext.xml"));
//通过,applicationContext.xml中的 bean的id取到 bean
Computer computer=(Computer) beanfactory.getBean("需要实例化的对象id");
//及时加载
//第一种:
ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
//第二种:
BeanFactory beanfactory=new ClassPathXmlApplicationContext("applicationContext.xml");
配置的基础标签
< bean> 代表一个类 属性介绍
id 代表类的标识(可以自己设)
class需要实例化的类全限定名
init-method="被调用的方法名" 初始化就跳方法
lazy-init:"true"; 设定,此类是否懒加载
<property> bean 的子标签 ,用来设定类的属性
name="被设定的属性名" 配设定的属性名
value="设定值"
//示例
set 注入 值
<property name="cid" value="1"></property>
构造方法 注入值
<constructor-arg index="0" type="类型" value="" name="属性名" ref=""></constructor-arg>
集合注入
<property name="集合属性名">
//也可以注入其他集合
<list>
<value>钓鱼</value>
<value>王者农药</value>
<value>毒奶粉</value>
</list>
</property>
// 代码示例
<bean id="代表实例id(自由设置)" class="需要,被实例话的类,全限定名">
<!-- 设定属性 采用set 注入(故此getset方法,必须要存在), ref 需要引入对象-->
<property name="name与被需要,被设置的属性相同" ref="AMD" >
</property>
<!-- 设定属性 采用set 注入 硬盘接口下的类-->
<property name="disk" ref="ADATA">
</property>
<property name="memory" ref="SanDisk">
</property>
</bean>
视图