目录
步骤三:创建BookService,BookServiceImpl,BookDao和BookDaoImpl四个类(附带截图和具体代码)
1,Spring的历史
2,Spring官网地址
3,Spring系统架构
- Spring Framework是Spring生态圈中最基础的项目,是其他项目的根基
- Spring Framework的发展也经历了很多版本的变更,每个版本都有相应的调整
(1)核心层
Core Container:核心容器,这个模块是Spring最核心的模块,其他都需要依赖该模块
(2)AOP层
AOP:面向切面编程,它依赖核心层容器,目的是在不改变原有代码的前提下,对其进行功能增强
Aspects:AOP是思想,Aspects是对AOP思想的具体实现
(3)数据层
Data Access:数据访问,Spring全家桶中有对数据访问的具体实现技术
Data Intergration:数据集成,Spring支持整合其他数据层的解决方案,比如Mybatis
Transactions:事务,Spring中事务管理是Spring AOP的一个具体实现
(4)Web层
(5)Test层
Spring主要整合了Junit来完成单元测试和集成测试
4,IOC,IOC容器,Bean,DI
1,IOC(反转控制)的概念
IOC:Inversion of Control,翻译过来是反转控制。
概念:在使用对象时,由主动new一个对象转为由外部去提供对象,在这个过程中,对象创建控制权从程序转到外部,这种思想称为控制反转
2,IOC容器
Spring和IOC思想的关系
1)Spring技术对IOC思想进行实现
2)Spring提供了一个容器,成为IOC容器,用来作为IOC思想中的"外部"
3)外部:指的是Spring的IOC容器
3,Bean
被创建或被管理的对象在IOC容器中统称为Bean;
容器中所存放的一个个对象就叫Bean或Bean对象
IOC容器的作用:IOC容器负责对象的创建、初始化等一系列工作,其中包含了数据层和业务层的类对象
4,DI(依赖注入)
DI:Dependency Injection,翻译过来是依赖注入
5,案例一(IOC入门案例 ):
- 创建Maven项目(Java项目)
- 在pom.xml添加Spring的依赖的jar包
- 创建BookService,BookServiceImpl,BookDao和BookDaoImpl四个类
-
resources 下添加 spring 配置文件,并完成 bean 的配置
-
使用Spring提供的接口完成IOC容器的创建
6.从容器中获取对象进行方法调用
步骤一:创建Maven项目
步骤二:添加spring依赖的jar包(pom.xml)
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>
</dependencies>
步骤三:创建BookService,BookServiceImpl,BookDao和BookDaoImpl四个类(附带截图和具体代码)
public interface BookDao {
public void save();
}
public class BookDaoImpl implements BookDao {
public void save() {
System.out.println("BookDao Save....");
}
}
public interface BookService {
public void save();
}
public class BookServiceImpl implements BookService {
BookDao bookDao = new BookDaoImpl();
public void save() {
System.out.println("BookService Save!!!");
bookDao.save();
}
}
步骤四:添加Spring配置文件
右键点击resources,鼠标放到new上,再选择XML Configuration File,选择Spring Config
步骤五:在配置文件中,配置Bean
<bean id="bookDao" class="com.hw.dao.impl.BookDaoImpl"></bean>
<bean id="bookService" class="com.hw.service.impl.BookServiceImpl"></bean>
步骤六:获取IOC容器
使用spring中提供的接口完成IOC容器创建,并创建一个Test类,编写main方法,从容器中获取方法,并进行调用
public class Test {
public static void main(String[] args) {
//读取spring的配置文件,创建出IOC容器,并把所有的Bean对象创建出来放到IOC容器中去
ClassPathXmlApplicationContext context =
new ClassPathXmlApplicationContext("applicationContext.xml");
//获取service层对象
//Object bookService = context.getBean("bookService");
//强制转换
BookService bookService = (BookService) context.getBean("bookService");
bookService.save();
}
}
运行结果:
BookService Save!!!
BookDao Save....
6,案例二(DI入门案例 ):
步骤一:去除代码中的new,并为属性提供setter方法
在bookServiceImpl类中,删除业务层中使用new的方式创建的dao对象下
在bookServiceImpl类中,为BookDao提供setter方法
public class BookServiceImpl implements BookService {
//删除业务层中使用new的方式创建的dao对象
private BookDao bookDao;
public void save() {
System.out.println("BookService Save!!!");
bookDao.save();
}
//提供对应的set方法
public void setBookDao(BookDao bookDao){
this.bookDao=bookDao;
}
}
步骤二:修改配置完成注入
在配置文件中添加依赖注入的配置
<!--bean标签标示配置bean
id属性标示给bean起名字
class属性表示给bean定义类型
-->
<bean id="bookDao" class="com.hw.dao.impl.BookDaoImpl"></bean>
<bean id="bookService" class="com.hw.service.impl.BookServiceImpl">
<!--配置server与dao的关系-->
<!--property标签表示配置当前bean的属性
name属性表示配置哪一个具体的属性
ref属性表示参照哪一个bean
-->
<property name="bookDao" ref="bookDao"/>
</bean>
运行结果:
BookDao Save....
![](https://img-blog.csdnimg.cn/direct/affd31d391674b1aa50b53e3d3ee6f6a.png)