案例代码如下:
pom文件:
<!--配置依赖-->
<dependencies>
<!--spring ioc 依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
</dependencies>
dao持久层mapper:
/**
* 客户dao接口
*/
public interface CustomerDao {
/**
* 保存客户操作
*/
void saveCustomer();
}
/**
* 客户DAO实现类
*/
public class CustomerDaoImpl implements CustomerDao {
/**
* 保存客户操作
*/
@Override
public void saveCustomer() {
System.out.println("正在保存客户操作......");
}
}
service业务层:
/**
* 用户业务层接口
*/
public interface CustomerService {
/**
* 保存客户操作
*/
void saveCustomer();
}
/**
* 客户业务层实现类
*/
public class CustomerServiceImpl implements CustomerService {
// 定义客户dao
private CustomerDao customerDao;
public void setCustomerDao(CustomerDao customerDao) {
this.customerDao = customerDao;
}
/**
* 保存客户操作
*/
@Override
public void saveCustomer() {
customerDao.saveCustomer();
}
}
controller表现层:
/**
* 控制器
*/
public class CustomerController {
public static void main(String[] args) {
// 1.加载spring 配置文件,初始化创建ioc容器
ApplicationContext context = new ClassPathXmlApplicationContext("classpath:bean.xml");
// 2.从ioc容器获取service
CustomerService customerService = (CustomerService)context.getBean("customerService");
// 3.保存客户操作
customerService.saveCustomer();
}
}
- 在实际项目应用中,我们都是通过ApplicationContext工厂接口,和它的实现类ClassPathXmlApplicationContext进行ioc容器的初始化。
ApplicationContext结构图如下:
- spring框架中的工厂体系结构中,ApplicationContext并不是顶层接口。顶层接口是BeanFactory,它的完整体系结构类如下:
工厂体系列表:
序号 | 名称 | 描述 |
---|---|---|
1 | BeanFactory | 【重点】spring框架工厂体系结构的顶层接口,提供了基础规范:获取bean对象、bean的作用范围、bean的类型。 |
2 | ListableBeanFactory | BeanFactory接口中的getBean方法只能获取单个对象。ListableBeanFactory可以获取多个对象 |
3 | HierarchicalBeanFactory | 在一个spring应用中,支持有多个BeanFactory,并且可以设置为它们的父子关系。比如ssm框架整合中的两个ioc容器 |
4 | ApplicationContext | 【重点】项目中直接使用的工厂接口,它同时继承了ListableBeanFactory和HierarchicalBeanFactory接口 |
5 | ConfigurableApplicationContext | 支持更多系统配置的工厂接口。比如:conversionService、environment、systemProperties、systemEnvironment |
6 | AbstractApplicationContext | 【重点】ApplicationContext工厂抽象类,提供了ioc容器初始化公共实现 |
7 | AbstractRefreshableApplicationContext | 在AbstractApplicationContext基础上,增加了ioc容器重建支持 |
8 | AbstractRefreshableConfigApplicationContext | 增加了配置文件解析处理 |
9 | AbstractXmlApplicationContext | 增加了配置文件解析处理 |
10 | ClassPathXmlApplicationContext | 【重点】项目中,直接使用的工厂实现类。从类的根路径下加载配置文件,创建spring ioc容器 |
11 | DefaultListableBeanFactory | 【重点】在spring框架工厂体系结构中,它是最强大的工厂类,也是我们最终创建的ioc容器,它内部持有了一系列Map集合。 |