什么是spring
Spring是分层的Java SE/EE应用 full-stack(全栈)轻量级开源框架
两大核心
IOC: 控制反转: 将对象创建的权利交给spring
AOP: 面向切面编程: 可以增强原有功能
耦合和内聚
耦合就是程序间的依赖关系
解耦就是降低程序间的依赖关系 (耦合只能降低,不能消除)
bean标签的作用
定义spring中的资源,受此标签定义的资源将受到spring控制
用于配置对象交由Spring 来创建。
默认情况下它调用的是类中的无参构造函数,如果没有无参构造函数则不能创建成功。
基本属性:
id:Bean实例在Spring容器中的唯一标识,可以通过id获取bean
class:Bean的全限定名称,bean的类型
name:bean的名称,可以通过name值获取bean,用于多人配合时给bean起别名
单例与多列
单例
当scope的取值为singleton时
实例化个数一个
当Spring核心文件被加载时,实例化配置的Bean实例
多例
当scope的取值为prototype时
实例化个数:多个
当调用getBean()方法时实例化Bean; (每次从容器获取对象,都会创建)
生命周期
单例
对象创建:当应用加载,创建容器时,对象就被创建了
对象运行:只要容器在,对象一直活着
对象销毁:当应用卸载,销毁容器时,对象就被销毁了
多例
对象创建:当使用对象时,创建新的对象实例
对象运行:只要对象在使用中,就一直活着
对象销毁:当对象长时间不用时,被 Java 的垃圾回收器回收了
Bean实例化三种方式
无参构造方法实例化 (最常用)
工厂静态方法实例化
工厂实例方法实例化
无参构造
它会根据默认无参构造方法来创建类对象,如果bean中没有默认无参构造函数,将会创建失 败
依赖注入
通过容器给 对象的成员变量赋值
IOC本质
是bean工厂创建对象然后存入bean容器中
DI的本质
就是对容器中的bean的成员变量进行赋值
Bean的依赖注入三种方式
set属性注入 (最常用)
构造注入
注解注入
set注入
格式
优缺点
优势: 创建对象时没有明确的限制,可以直接使用默认的无参构造函数 -
缺点: 如果某个成员必须有值,获取对象时set方法可能没有执行
构造注入
格式
必须要有构造方法 ,构造方法值必须要与格式一一对应
引用数据类型
properties文件
1.准备外部properties
2.开启context命名空间支持
3.加载指定的properties文件
4.使用加载的数据