(一)IOC级Bean容器
面向接口编程
结构设计中,分清层次及调用关系,每层只向外(上层)提供一组功能接口,各层间只依赖接口而非实现类
接口实现的变动不影响各层间的调用
“面向接口编程”的“接口”用于隐藏具体实现和实现多态性的组件
什么是IOC?
------------控制反转,控制权的转移,应用程序本身不负责依赖对象的创建和维护,而是由外部容器负责创建和维护
------------DI(依赖注入)是其一种实现方式
------------目的:创建对象并且组装对象之间的关系
Spring的Bean配置
接口在Spring中的配置方式
XML配置方式:
BeanFactory.java
package com.stonegeek.service;
/**
* Created by StoneGeek on 2019/3/22.
*/
public interface BeanFactory {
public void Beantest();
}
BeanFactoryImpl.java
package com.stonegeek.service.impl;
import com.stonegeek.service.BeanFactory;
/**
* Created by StoneGeek on 2019/3/22.
*/
public class BeanFactroyImpl implements BeanFactory {
@Override
public void Beantest() {
System.out.println("----------------This is a 传统的XML配置的bean!-------------------");
}
}
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
">
<bean id="beanFactroy" class="com.stonegeek.service.impl.BeanFactroyImpl" />
</beans>
TestBean.java
package com.stonegeek;
import com.stonegeek.service.BeanFactory;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* Created by StoneGeekon 2019/3/22.
*/
public class TestBean {
@Test
public void test(){
ApplicationContext ctx= new ClassPathXmlApplicationContext("applicationContext.xml");
BeanFactory beanFactory=(BeanFactory) ctx.getBean("beanFactroy");
beanFactory.Beantest(); //----------------This is a 传统的XML配置的bean!-------------------
}
}
单元测试:
------------下载junit-*.jar并引入工程
------------创建UnitTestBase类 ,完成对Spring配置文件的加载,销毁
------------所有的单元测试类都继承自UnitTestBase,通过它的getBean方法获取想要得到的对象
------------子类(具体执行单元测试的类)加注解:@RunWith(BlockJUnit4ClassRunner.class)
------------单元测试方法加注解:@Test
------------右键选择要执行的单元测试方法执行或者执行一个类的全部单元测试方法
Bean容器初始化:
------------基础:两个包
一、org.springframework.beans 二、org.springframework.context
BeanFactory提供配置结构和基本功能,加载并且初始化Bean
ApplicationContext保存了Bean对象并在Spring中被广泛使用
------------方式,ApplicationContext
本地文件
ClassPath
Web应用中依赖servlet或者Listener
Spring 注入:
------------Spring注入是指在启动Spring容器加载Bean容器的时候,完成对变量的赋值行为
------------常用的两种注入方式:
设值注入
-<property name=“ ” ></property>
构造注入
- <constructor-arg index=””></ constructor-arg>