Spring
一、核心功能
IOC
IOC:控制反转,将对象的生命周期交给Spring容器管理
xml
bean:
id:必须唯一
class:要创建对象的真实类型(全类名)
scope:Bean对象的作用
singleton:单例(默认)
prototype:多例
init-method:配置Bean对象中的初始化方法,在Spring容器启动,创建Bean对象后,初始化阶段调用初始化方法
destory-method:Bean对象的销毁方法,在Spring容器销毁时调用
注解
@Service
@Repository
@Controller
@Component: 以上四个最终体现的都是@Component
DI
DI: 依赖注入,从容器中取对象,更方便的注入对象所需的属性。
xml
bean:
constructor: 构造器注入属性
property: 属性注入
value: 简单类型直接编写属性值
ref: 引用到其他的Bean对象
注解
@Value: 从Spring环境中获取属性值并注入到对象的属性中,支持SPEL表达式。
@Autowired: 注入其他Bean对象,先按照类型匹配,类型有重复的就按照字段/属性名匹配
@Qualifier: 配合@Autowired使用,直接指定注入Bean的名称
@Resource: 按照名字找,如果找不到就报错。
AOP
AOP: 面向切面编程,对要执行的方法进行横向切面,植入增强的功能。
核心概念
Pointcut: 切点,利用aspectj的aop表达式,描述具体切入哪些类的哪些地方。
Advice:增强,需要描述什么时机做什么事情。
before
after-returning
after-throwing
around
Aspect: 切面,由Pointcut + Advice组成
原理
动态代理:
JDK动态代理:要求被代理对象必须有接口,代理对象是已实现该接口的方式进行增强。
CGLIB:被代理不需要有接口,代理对象是直接继承被代理对象,通过重写方法的形式进行增强。
二、拓展功能
事件机制
监听器:监听Spring/自定义 事件来处理相关功能,自定义Bean对象直接实现。ApplicationListener<E>接口,在泛型中描述事件对象,即可实现监听器功能。
ApplicationListener
事件对象:ApplicationEvent
Spring Schedule
Spring Schedule: 可以实现定时任务,通过cron表达式指定什么时间处理什么事情。
@EnableSheduling:启用Spring调度功能。
@Scheduled: 在需要进行定时执行的方法上标注,描述定时执行表达式以及
cron表达式:
* * * * * *
秒 分 时 天 月 周
n/m:周期执行,以n开始间隔m执行n1,n2:多个时间