Spring
Spring的主要发明者是Rod Johnson,他是轮子理论的推崇者。轮子理论:不要重复发明轮子。
运行时环境:
- Test:spring 提供的测试功能
- Core Container:核心容器,是Spring 启动最基本的条件
- AOP: 实现 aop 功能需要依赖
- Aspects: 切面 AOP 依赖的包
- Data Access/Integration : spring 封装数据访问层相关内容
- WEB:需要 spring 完成 web 相关功能时需要
Spring 框架中重要概念
容器(Container): ApplicationContext接口是BeanFactory 的子接口。(在Spring中所有的东西都放在ApplicationContext 里面了,只要是Spring负责做的事情全通过ApplicationContext 就全能取出来)
IoC 控制反转
IoC英文名称为:Inversion of Control
IoC的功能:把原先由程序员主动通过 new 实例化对象的事情, 转交给 Spring 负责. (管理和创建对象用的)
IoC最大的作用:解除了对象管理和程序员之间的耦合。传统应用程序都是由我们程序员在类内部主动创建依赖对象,从而导致类与类之间高耦合。有了IOC容器后,把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,所以对象与对象之间是松散耦合。
DI 依赖注入
DI英文名称为:Dependency Injection
当当前类需要依赖另一个类的时候,我们把另一个类实例化之后注入到当前类的过程就称之为依赖注入。
<bean id="peo" class="com.worship.pojo.People">
<property name="desk" ref="desk"></property>
</bean>
<bean id="desk" class="com.worship.pojo.Desk">
<property name="id" value="1"></property>
<property name="price" value="12"></property>
</bean>
AOP 面向切面编程
AOP英文名称:Aspect Oriented Programming
正常程序执行流程都是纵向执行流程 (从上往下执行的),而面向切面编程,在原有纵向执行流程中添加横切面。在整个程序执行的任意一个方法的前面或后面额外进行添加或扩充一点功能,前面的叫前置通知,后面的叫后置通知,重点就是对程序的高扩展性,而且对原有的功能没有影响,使原有的功能的职责更加明确。
面向切面编程是什么?
在程序原有纵向执行流程中,针对某一个或某一些方法添加通知,形成横切面过程就叫做面向切面编程。
常用概念
原有功能: 切点, pointcut
前置通知: 在切点之前执行的功能,before advice
后置通知: 在切点之后执行的功能,after advice
如果切点执行过程中出现异常,会触发异常通知.throws advice
织入: 把切面嵌入到原有功能的过程叫做织入