Spring
- 什么是框架
经过验证的,具有一定功能的半成品软件
- 框架的作用
提高开发效率,增强可重用性,提供编写规范
- Spring是什么
Spring是分层的javaEE应用的全栈的(full-stack),轻量级,开源的,半成品框架,以IOC(反转控制)和IOP(面向切面编程)为内核
分层: 视图层,逻辑层,持久层
- Spring的优势
- . 方便解耦,简化开发
- 方便集成各种优秀框架
- 方便程序的测试
- 切面编程的支持
- 声明式事务的支持@Transactional
- 降低javaEEAPI的使用难 度
- IOC的反转控制
IOC全称为 Inversion of Control,翻译为 “控制反转”,它还有一个别名为 DI,即依赖注入,本质的功能就是:就是由 Spring IOC 容器来负责对象的生命周期和对象之间的关系
- bean的标签说明
Id:bean实例在标签中的唯一标识
Class:bean的全限定名称
Scope:范围配置,有两种模式,分别是singletion(单例模式)和prototype(多例模式),spring默认是单例模式
- bean的生命周期
- 当scope的取值为singleton时的时候,bean的实例化个数是一个,
Bean的实例化时机是当spring核心文件被加载时,实例化配置的bean实例,
生命周期:
对象创建:应用被加载,创建容器时,对象被创建
对象运行:只要容器在,对象就一直存在
对象销毁:只要应用被卸载,容器被销毁时,对象就被销毁了
- 当scope的取值为prototype的时,bean有多个实例化个数,当调用getbean()方法时,就实例化bean.
生命周期:
对象创建:当使用对象时,创建新的对象实例
对象运行:只要对象在使用中,就一直存在
对象销毁:当对象长时间不被使用的时,就被jvm垃圾回收器回收了
注:以上bean对象实例化都是spring调用对象的无参构造方法
- DI依赖注入
有两种注入方式,分别是set注入和构造注入
依赖: 两个对象之间的关系,比如service想要调用dao的方法,那么service里就需要dao对象,这就是依赖。
注入:就是将dao给了service的过程,在spring的容器中,注入是容器给完成的。
- 注解开发
Spring的常用注解
- @component 用于实例化bean(创建实体类)
- @controller 在controller层实例化bean
- @service 在service层实例化bean
- @repository 在dao层实例化bean
- @autowired 使用在字段上,用于根据类型依赖注入
String自带的,需要自动装配的bean,如果存在相同类型的bean,则会抛出异常
- @qualifier 结合@autowirrd一起使用,用于根据名称进行依赖注入,当bean是多例模式的情况下使用
- @resource 相当于@autorwired+@qualifier按照名称进行注入
Java自带的,默认按名称进行匹配,如果不存在名称,则按类型去匹配,如果存在同类型的bean,则不会抛出异常
- @value 注入普通属性