框架
软件工程框架:经过验证的,具有一定功能的,半成品软件
框架的作用
- 提高开发效率
- 增强可重用性
- 提供编写规范
- 节约维护成本
- 解耦底层实现原理
Spring
Sping是分层的javaSE/EE应用 full 轻量级 开源的 半成品框架,以ioc和AOP为内核
分层:视图层,逻辑层,持久层
Spring的体系结构
Spring体系结构
- 底层是核心容器
- Beans
- Core
- Context
- SpringEI表达式
- 中间层技术
- AOP
- Aspects
- 应用层技术
- 数据访问与数据集成
- Web集成
- Web实现
- 基于Test测试
笔试: 事务应该具有4个属性:原子性、一致性、隔离性、持久性。
Spring优势
- 方便解耦,简化开发
- 方便集成各种优秀框架
- 方便程序的测试
- 切面编程的支持
- 声明式事务的支持@Transactional
- 降低JavaEE API的使用难度
IOC 反转控制
本质的功能就是:就是由 Spring IOC 容器来负责对象的生命周期和对象之间的关系
Bean标签说明
- id:Bean实例在Spring容器中的唯一标识
- class:Bean的全限定名称
- scope: 范围配置,spring默认是单例模式。
生命周期
1.当scope的取值为singleton时(系统默认的)
Bean的实例化个数:1个
Bean的实例化时机:当Spring核心文件被加载时,实例化配置的Bean实例
Bean的生命周期:
对象创建:当应用加载,创建容器时,对象就被创建了
对象运行:只要容器在,对象一直活着
对象销毁:当应用卸载,销毁容器时,对象就被销毁了
2.当scope的取值为prototype时
Bean的实例化个数:多个
Bean的实例化时机:当调用getBean()方法时实例化Bean
对象创建:当使用对象时,创建新的对象实例
对象运行:只要对象在使用中,就一直活着
对象销毁:当对象长时间不用时,被 Java 的垃圾回收器回收了 ( jvm gc垃圾回收)
注意: 以上bean对象实例化都是spring调用对象的无参构造方法
还有两种方法:工厂实例方法,工厂静态方法
DI 依赖注入
两种方式 set注入 构造注入
注解开发
注解 | 说明 |
---|---|
@Component | 使用在类上用于实例化Bean |
@Controller | 使用在web层类上用于实例化Bean |
@Service | 使用在service层类上用于实例化Bean |
@Repository | 使用在dao层类上用于实例化Bean |
@Autowired | 使用在字段上用于根据类型依赖注入 |
@Qualifier | 结合@Autowired一起使用用于根据名称进行依赖注入 |
@Resource | 相当于@Autowired+@Qualifier,按照名称进行注入 |
@Value | 注入普通属性 |
注意: 一般用autowired注解,因为spring默认都是单例模式,所以也很少和Qualifier配合使用。Resource如果注入的对象不存在会抛出异常