spring是java开发者必备的基础框架之一,本文从入门级别的基础开始阐述自己的一点点理解
架构图
spring整体架构为20多个模块,我最熟悉的有AOP模块(拿来做统计日志,统计方法耗时等)、JDBC(连接数据库)、Servlet(交互式地浏览和生成数据)
1.Core Container
Core Container包含有 Bean Core Context Expression Language 4个模块。
基础模块:Core、Bean,这两个模块提高了spring的核心,IOC控制反转和DI依赖注入,BeanFactor通过工厂模式解决了单例的需要,Core模块则是提供了所有spring其他组件需要的核心工具类,可以理解为是一个公共的类库。
2.Data Acces/Integration
Data Acces/Integration 包含JDBC、ORM、OXM、JMS 和Transaction
重点模块:JDBC 连接数据库的;ORM,对象-关系映射;Transaction 声明式事务
3.Web,为应用程序提供上下文
- AOP
AOP模块,可以让你定义例如方法拦截器和切点,将逻辑代码分开
IOC的基本概念
IOC有三种依赖注入的方式,即构造方法注入、setter方法注入以及接口注入
bean的生命周期
核心知识点
- bean的生命周期
bean对象实例化—>设置对象属性—>beanserviceprosesor前置处理->inilizisionBean 初始化检测—>init method —>beanserviceprosesor 后置处理—>使用中—>destory inilizisionBean —>destory init
beanfactory和factorybean和applicationcontext的区别
- ioc和aop的理念
ioc就是控制反转
- spring里面用了什么设计模式
beanFactory 用到了单例模式、工厂模式
aop用到了代理模式
- Spring中bean的作用域
singleton
protype
session
globle session
- Spring框架中的Bean是线程安全的么?如果线程不安全,那么如何处理
不是线程安全的,可以切换多例
- 自动装配
no
byName
byType
注入方式
构造方法注入
getter setter 注入
接口注入
2.5之后加了一个注解注入
---------------------本文参考书籍《Spring源码深度解析》、《Spring揭秘》王富强版