初识Spring
Spring家族
Spring发展史
Spring系统构架
Spring Framework系统架构
Spring学习路线
核心概念
IOC控制反转
使用对象时,由主动new产生对象转换为由外部提供对象,此过程中对象创建控制权由程序转移到外部,此思想称为控制反转
Spring技术对IoC思想进行了实现
- Spring提供了一个容器,称为IoC容器,用来充当IoC思想中的“外部”
- IoC容器负责对象的创建、初始化等一系列工作,被创建或被管理的对象在IC容器中统称为Bean
DI依赖注入
在容器中建立bean与bean之间的依赖关系的整个过程,称为依赖注入
核心
目标: 充分解耦
使用IoC容器管理bean (Ioc)
在IoC容器内将有依赖关系的bean进行关系绑定(DI)最终效果
使用对象时不仅可以直接从IoC容器中获取,并且获取到的bean已经绑定了所有的依赖关系
IOC入门案例
Ioc入门案例思路分析
1.管理什么 ? (Service与Dao)
2.如何将被管理的对象告知IoC容器 ? (配置 )
3.被管理的对象交给IoC容器,如何获取到IoC容器 ? ( 接口)
4.IoC容器得到后,如何从容器中获取bean ? ( 接口方法)
5.使用Spring导入哪些坐标 ? ( pom.xm1 )
案例中需要的类
public interface BookDao {
public void save();
}
public class BookDaoImpl implements BookDao {
public void save() {
System.out.println("book dao save ...");
}
}
public interface BookService {
public void save();
}
public class BookServiceImpl implements BookService {
private BookDao bookDao = new BookDaoImpl();
public void save() {
System.out.println("book service save ...");
bookDao.save();
}
}
DI入门案例
入门案例思路分析
要想实现依赖注入,必须要基于IOC管理Bean
- DI的入门案例要依赖于前面IOC的入门案例
Service中使用new形式创建的Dao对象是否保留?
- 需要删除掉,最终要使用IOC容器中的bean对象
Service中需要的Dao对象如何进入到Service中?
- 在Service中提供方法,让Spring的IOC容器可以通过该方法传入bean对象
Service与Dao间的关系如何描述?
使用配置文件
入门案例代码实现
需求:基于IOC入门案例,在BookServiceImpl类中删除new对象的方式,使用Spring的DI完成Dao层的注入
1.删除业务层中使用new的方式创建的dao对象
2.在业务层提供BookDao的setter方法
3.在配置文件中添加依赖注入的配置
4.运行程序调用方法
public class BookServiceImpl implements BookService {
private BookDao bookDao;
public void save() {
System.out.println("book service save ...");
bookDao.save();
}
public void setBookDao(BookDao bookDao) {
this.bookDao = bookDao;
}
}