Spring

85 阅读2分钟

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:多个时间