Spring 与 IoC
控制反转(IoC, Inversion of Control),是一个概念,是一种思想。指将传统上由程序代码直接操控的对象调用权交给容器,通过容器来实现对象的装配和管理。控制反转就是对对象控制权的转移,从程序代码本身反转到了外部容器。当前比较流行的 IoC 实现方式有两种:依赖注入和依赖查找。
- 依赖查找: Dependency Lookup, DL,容器提供回调接口和上下文环境给组件,程序代码则需要提供具体的查找方式。比较典型的是依赖于 JNDI 系统的查找。
- 依赖注入: Dependency Injection, DI,程序代码不做定位查询,这些工作由容器自行完成。
依赖注入是目前最优秀的解耦方式。依赖注入让 Spring 的 Bean 之间以配置文件的方式组织在一起,而不是以硬编码的方式耦合在一起的。
Spring 程序开发
- 定义接口与实体类
public interface ISomeService {
void doSome();
}
public class SomeServiceImpl implements ISomeService {
public SomeServiceImpl() {
System.out.println("执行无参构造器");
}
@Override
public void doSome() {
System.out.println("执行doSome()方法");
}
}
- 创建 Spring 配置文件
Spring 配置文件的文件名可以随意,但 Spring 建议的名称为 applicationContext.xml。
<bean id="myService" class="com.huang.service.SomeServiceImpl"/>
- <bean />: 用于定义一个实例对象。 一个实例对应一个 bean 元素。
- id:该属性是 Bean 实例的唯一标识,程序通过 id 属性访问 Bean, Bean 与 Bean 间的依赖关系也是通过 id 属性关联的。
- class:指定该 Bean 所属的类,
- 定义测试类
(1) ApplicationContext 接口容器
ApplicationContext 用于加载 Spring 的配置文件,在程序中充当“容器”的角色。其实现类有两个:ClassPathXmlApplicationContext 和 FileSystemXmlApplicationContext
@Test
public void test02() {
// 创建容器对象,加载Spring配置文件
// 从类路径下查找配置文件
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
//从容器中获取对象
ISomeService service = (ISomeService) ac.getBean("myService");
service.doSome();
}
@Test
public void test03() {
// 创建容器对象,加载Spring配置文件
// 从项目的根下查找配置文件
ApplicationContext ac = new FileSystemXmlApplicationContext("applicationContext.xml");
//从容器中获取对象
ISomeService service = (ISomeService) ac.getBean("myService");
service