1.Spring是什么?
Spring是一个轻量级的企业框架由Rod johnson创建,目的是简化企业级开发的复杂程度,可测试,松耦合等一系列功能,任何java程序使用都受益
2.Spring的作用
松耦合,集中管理javaBean的生命周期,提供了可插拔式的切入编程
3.Spring的组成结构
1.test 集成单元测试
2.Bean javaBean的管理
3.Core 核心组件提供ioc 功能
4.Context:提供包的扫描,国际化,事件等功能
5.SPEL:sprign表达式
6.AOP:面向切面编程
7.MVC:SpringMVC框架
8.JDBC:集成jdbc开发
9.ORM:数据库开发
10.Cloud:微服务框架
11.Security 安全框架
4.Spring的两大核心
-
IOC (Inversion of Control)控制反转将对象的创建和销毁交给Spring容器管理的, 过程就叫控制反转
控制的是对象的创建与销毁
反转:对象的的创建与管理是由原来的开发者管理变为Spring容器管理
1.DI 依赖注入 将类与类之间的依赖关系,在容器内完成绑定
-
AOP 面向切面变成,AOP是对OOP的补充
5.IOC的概念
5.1什么是IOC
IOC 控制反转是一种程序设计思想
-
控制
控制的是JAVABean的创建与管理
-
反转
将控制权反转 由以前程序员自己创建对象反转成由Spring容器创建
5.2IOC作用
解耦,提高程序的可扩展与可维护性
解耦:降低程序中代码的依赖性
没有IOC的程序中,我们使用new来完成对象的创建,如果需要的对象的类型发生改变,就需要手动修改代码。
-
DI依赖注入是IOC的另外一种说法,将对象交给容器管理注入到我们需要的依赖中
5.3IOC容器
5.3.1IOC概念
IOC是Spring的核心容器将对象的创建销毁生命周期进行统一管理,Spring 容器使用依赖注入(DI)来管理组成一个应用程序的组件
5.3.2容器的分类
-
BeanFactory (父类接口) 最简单的容器,给DI提供了最基本的支持
-
ApplicationBeanFactory (子类接口)
5.3.3.ioc容器实例化的三种方式
1. ClassPathXmlApplicationContext 基于ClassPath路径中XML文件配置的应用程序上下文
2.FileSystemXmlApplicatioinContext 基于文件系统中XML文件配置的应用程序上下文
3.AnnotationConfigApplicationConext 基于注解配置的应用程序上下文
5.3.4 ioc容器实现创建JavaBean的案例步骤
1.创建maven项目
2.导入Spring依赖 Spring-context
3.创建测试类
4.配置Spring.xml配置文件
<bean id="b" class="com.wcl.demo.B"></bean>
5.创建ioc容器并调用getBean方法
//读取Spring.xml获取IOC容器 ApplicationContext IOC的一种容器 //ClassPathXmlApplicationContext 是ApplicationContext的实现类 ApplicationContext context = new ClassPathXmlApplicationContext("Spring.xml"); // A a = (A) context.getBean("a"); A a = context.getBean(A.class);
6.有关Bean的知识点
6.1beans节点
beans节点是Spring配置文件的根节点,所有Javabean都定义在beans内部
6.2bean 代表一个java对象
-
id 对象id,id不能重复
-
name 对象名称,name可以重复,如果重复将读取最后一个
-
class 对象的类型,包名+类名
-
scope 作用域
singleton
单例模式,在IOC容器中仅存在一个实例 在容器启动时创建bean
prototype
多例,每次从IOC容器调用Bean时,都会返回一个新的实例 在调用getBean时创建bean
request
每次Http请求都会创建一个新的Bean,该作用域仅适用于WebApplicationContext环境
session
同一个会话共享一个Bean,不同的会话使用不同的Bean,仅适用于WebApplicationContext环境
application
一般用于portlet应用环境,仅适用于WebApplicationContext环境
6.3bean的实例化的三种方式
1.通过构造函数
默认无参构造方法 :条件无参构造方法不被覆盖
2.静态工厂方法
3.实例化工厂方法
6.4属性依赖注入的三种方式
-
构造方法
<bean id="b" class="com.wcl.demo2.B"/> <bean id="a" class="com.wcl.demo2.A"> <constructor-arg name="b" ref="b"/> <constructor-arg name="age" value="10"/> </bean>
-
set方法
<bean id="b" class="com.wcl.demo3.B"/> <bean id="a" class="com.wcl.demo3.A"> <property name="b" ref="b"/> <property name="age" value="10"/> </bean>
-
自动装配
no 默认不开启
byName 根据名字 对应的id 自动装配 基于set方法
byType 根据类型 自动装配 基于set方法
constructor 通过构造方法装配
6.5bean的延迟加载
在默认情况下,spring的ApplicationContext容器在启动的时候,会自动实例化所有singleton的Bean并缓存在容器中 通过设置延迟加载 lazy-init =true 可以在bean在第一次从容器中获取中进行实例化