Spring基于XML的IOC实例
将改进后的工厂模式通过Spring来实现,解析配置文件、创建仓库,将对象存入仓库的过程都由Spring来做,我们只需要配置好配置文件,获取仓库中的对象即可
1. 在pom中引入Spring环境
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.itheima</groupId>
<artifactId>day01_eesy_02spring</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.11.RELEASE</version>
</dependency>
</dependencies>
</project>
2. 业务层和持久层结构及代码
结构
业务层
持久层
3. 创建并配置配置文件
beans.xml中约束的获取
访问网址:Spring Framework 中文文档
4. 表现层测试
package com.itheima.ui;
import com.itheima.dao.IUserDao;
import com.itheima.service.IUserService;
import com.itheima.service.impl.IUserServiceImpl;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Client {
public static void main(String[] args) {
//拿到容器
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");
//从容器中获取指定的Bean,下面的两种方式均可
IUserDao iUserDao = (IUserDao) applicationContext.getBean("IUserDao");
IUserService iUserService = applicationContext.getBean("IUserService", IUserService.class);
System.out.println(iUserDao);
System.out.println(iUserService);
}
}
5. ApplicationContext的三个常用实现类
在上述的测试中,使用的是ClassPathXmlApplicationContext这个实现类,此处实际上是可以使用三个实现类的
- ClassPathXmlApplicationContext
加载类路径下的配置文件 - FileSystemXmlApplicationContext
加载磁盘任意路径下的配置文件(必须有访问权限) - AnnotationConfigApplicationContext
用于读取注解创建容器
6. ApplicationContext和BeanFactory两个接口
- ApplicationContext
单例对象适用,更常用
构建核心容器时,创建对象采取的策略是立即加载的方式,只要一读取完配置文件马上就创建配置文件中的配置的对象。 - BeanFactory
多例对象适用
构建核心容器时,创建对象采取的策略是延迟加载的方式,什么时候根据id获取对象,什么时候才真正的创建对象。