Spring随笔
Spring 体系结构
IoC 容器
-
BeanFactory
-
ApplicationContext
-
Bean 定义
-
Bean 和 Spring 容器的关系
-
配置元数据
- xml
- 注解
- Java
-
-
Bean 作用域
- singleton:单例
- prototype:每次从容器中
getBean
相当于new XxxBean()
- request:每次 HTTP 请求创建一个 Bean,只适用于 WebApplicationContext
- session:同一个 Session 共享一个 Bean,只适用于 WebApplicationContex
- Bean 生命周期:定义->初始化->使用->销毁
- 初始化回调
- 销毁回调
-
Bean 后置处理器
- Bean 定义继承:创建 Bean 定义模板,父类 Bean 不能被实例化,被标记为
abstract=true
依赖注入
核心功能:管理 Bean 之间的依赖关系
依赖注入(DI,也称为布线),将类粘合在一起,同时类之间保持独立
-
基于构造函数的 DI
- 向一个对象传递引用,使用
ref
属性,直接传递值,使用value
属性
- 向一个对象传递引用,使用
-
基于设值函数的 DI
- 使用
<bean>
标签的<property>
属性,将ref
引用注入依赖对象name
- 使用
Beans 自动装配
-
自动装配 byName
-
自动装配 byType
-
构造函数的自动装配
基于注解的配置
-
@Required
-
@Autowired
- 直接应用于字段最为常用,但是从构造方法注入在代码层面更好
- 还可以添加到该类型数组的字段,容器的字段,方法
-
@Qualifier
- 对于多个相同类型的 Bean,只为其中一个进行装配
- 配合
@Autowired
使用,需要编写 xml 配置文件
-
@Qualifier
-
JSR-250 注解
@PostInit
和@PreDestroy
@Resource
-
基于Java的配置
@Configure
注解类表示该类可以使用 Spring IOC 容器作为 Bean 定义的来源- 需要 jre,jdk8 一下有jre
@Bean
注解告诉 Spring,注解方法将返回一个 Bean 对象@Import
注解允许从另一个配置类中加载@Bean
定义- 还有
@Scope
等注解可以代替 xml 中的属性 - 用于替代基于 xml 的配置
-
事件处理
- ApplicationContext 会发布某些类型的事件
- ApplicationEvent 类和 ApplicationListener 接口提供在 ApplicationContext 中处理事件
- 如果一个 Bean 实现 ApplicationListener,每次 ApplicationEvent 被发布到 ApplicationContext上,会通知 Bean
- 标准事件:Context 被初始化或刷新,启动,停止,关闭,请求被服务
- Spring 事件处理是单线程的,所有接收者收到消息前一直阻塞
- 监听上下文
AOP
-
基于 xml 的 AOP 配置
-
基于 @Aspect 的 AOP 配置
@Aspect
注解声明 切面@Pointcut(execution(* com.*.*(..)))
注解声明 切入点@Before(pointcut = "")
声明 方法