目录
一、Spring概述
1.Spring是轻量级的开源的Java框架
2.Spring可以解决企业应用开发的复杂性。
3.Spring有两个核心部分:IOC和 Aop
(1) IOC:控制反转,把创建对象过程交给Spring进行管理。
(2) Aop:面向切面,不修改源代码进行功能增强
4.Spring特点
1.方便解耦,简化开发
2.Aop编程支持
3.方便程序测试
4.方便和其他框架进行整合
5.方便进行事务操作
6.降低 API开发难度
5.Spring5模块图
Spring 总共大约有 20 个模块, 由 1300 多个不同的文件构成。 而这些组件被分别整合在核心容器(Core Container) 、 AOP(Aspect Oriented Programming)和设备支持(Instrmentation) 、数据访问与集成(Data Access/Integeration) 、 Web、 消息(Messaging) 、 Test等 6 个模块中。 以下是 Spring 5 的模块结构图:
模块名称 | 简介 |
spring-core | 依赖注入IOC与Dl的最基本实现。 |
spring-beans | Bean工厂与Bean的装配。 |
spring-context | 定义基础的Spring的Context上下文即IOC容器。 |
spring-expression | Spring表达式语言。 |
二、第一个Spring项目
1.创建User.java类
public class User {
public void add(){
System.out.println("add.......");
}
}
2.创建Spring配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--配置User对象-->
<bean id="user" class="com.atguigu.spring5.User"></bean>
</beans>
3.进行测试
@Test
public void testAdd(){
//1 加载spring配置文件
ApplicationContext context =
new ClassPathXmlApplicationContext("bean1.xml");
//2 获取配置创建的对象
User user = context.getBean("user", User.class);
System.out.println(user);
user.add();
}
三、IOC(概念和原理)
1.什么是IOC
(1)控制反转,把对象创建和对象之间的调用过程,交给Spring进行管理
(2)使用IOC目的:为了耦合度降低
(3)做入门案例就是IOC实现
2.IOC底层原理
(1)xml解析、工厂模式、反射
3.画图讲解IOC底层原理
4.IOC过程(进一步降低耦合度)
第一步 XML配置文件,配置创建的对象
<bean id="user" class="com.atguigu.spring5.User"></bean>
第二步 有service类和dao类,创建工厂类
class UserFactory {
public static UserDao getDao(){
String classValue = class属性值; //1 xml解析
Class clazz = Class.forName(classValue); //2 通过反射创建对象
return (UserDao)clazz.newInstance();
}
}
5.IOC(接口)
1.IOC 思想基于 IOC 容器完成,IOC 容器底层就是对象工厂
2.Spring提供的IOC容器实现的两种方式(两个接口):
(1)BeanFactory接口:IOC容器基本实现是Spring内部接口的使用接口,不提供给开发人员进行使用(加载配置文件时候不会创建对象,在获取对象时才会创建对象。)
(2)ApplicationContext接口:BeanFactory接口的子接口,提供更多更强大的功能,提供给开发人员使用(加载配置文件时候就会把在配置文件对象进行创建)推荐使用!
3.ApplicationContext通常的实现