初始Spring


一、Spring是什么

Spring是一个开源框架,为了解决企业应用开发的复杂性而创建的,但现在已经不止应用于企业应用

      是一个轻量级的控制反转和面向切面的容器框架

      从大小和开销而言都是轻量级

      提供了丰富的切面编程丰富支持,允许通过分离应用的业务逻辑与系统级服进行内聚性的开发

      包含并管理应用对象的配置和生命周期,这种意义上是一种容器

      将简单的组件配置,组合成为复杂的应用,这种意义上来说是一种框架

二、Spring的特点

1、IOC和DI

IOC: 控制反转

即控制权的转移,将我们创建对象的方式反转了,以前对象的创建是由我们开发人员自己维护,包括依赖关系也是自己注入。使用了spring之后,对象的创建以及依赖关系可以由spring完成创建以及注入,反转控制就是反转了对象的创建方式,从我们自己创建反转给了程序创建(spring)

DI: Dependency Injection 依赖注入

spring这个容器中,替你管理着一系列的类,前提是你需要将这些类交给spring容器进行管理,然后在你需要的时候,不是自己去定义,而是直接向spring容器索取,当spring容器知道你的需求之后,就会去它所管理的组件中进行查找,然后直接给你所需要的组件.

2.IOC 的实现

实现IOC思想需要DI做支持

配置Bean:通过全类名配置

id:一般用将类型的首字母改为小写
class:全类名,通过反射方式在IOC中创建Bean,要求Bean中必须有无参数的构造器

注入方式: 1.set方式注入 2.构造方法注入 3.字段注入
注入类型: 1.值类型注入 2.引用类型注入
———————————————

注解配置

1.对bean的标注基于注解方式有:

@Component:放在一个类前边,他可以被Spring识别,Spring容器会自动将POJO转换为容器管理的Bean.他和XML配置是等效的:
@Repository:对DAO类进行标注
@Service:对Service类进行标注
@Controller:对Controller类进行标注
2.获得基于注解的bean配置信息,需要配置context:component-scan进行扫描
3.使用@Autowired注解实现Bean的依赖注入,默认按照类型byType的方式匹配;
@Autowired 标注的变量中。如果在Spring启动时没有一个和标注变量类型匹配的 bean ,则会抛NoSuchBeanDefinitionException 异常,如果希望 Spring 即使找不到匹配的 bean 也不要抛出异常,可以使用@Autowired(required=false) 进行标注

3.AOP

AOP是Spring框架的面向切面的编程思想,是对面向对象思想的一种补充,通俗的说就是将涉及多业务流程的通用功能抽取并单独封装,形成独立的切面,在合适的时机切入到业务流程指定的位置。它的出现是为了解决代码冗余问题,假设在一个复杂的业务系统中,用户登录是基础功能,存在多个业务涉及用户登录:
传统设计思想:把登录功能实现代码写入每个业务流程中,造成许多的代码冗余,维护和更新非常麻烦。

使用动态代理思想:使用一个代理将对象包装起来,然后该代理对象取代原始对象,任何对原始对象的调用都要通过该代理,代理对象决定是否以及何时将方法调用转到原始对象上

AOP的思想类似动态代理的思想,将这个登录功能抽取出来形成独立的模块,当业务流程需要用到的时候,系统自动将登录模块切入到业务流程中。

基本概念:

切面(Aspect):一个横切关注点(跨越应用程序多个模块的功能)被模块化的特殊对象,一个关注点可能有多个对象,实现的方式是基于@Aspect注解
连接点(Jointpoint)在程序执行过程中某个特定的点,比如某方法调用的时候或者处理异常的时候,一个连接点总是表示一个方法的执行
通知(Advice):在切面的某个特定连接点上执行的动作,是切面必须要完成的动作,有around,after,before等不同类型的通知
切入点(Pointcut):匹配连接点的断言,通知和一个切入点表达式关联,并在满足这个切入点的连接点上运行
引入(Introduction):用来给一个类型声明额外的方法或属性,Spring允许引入新的接口到任何被代理的对象
目标对象(Target Object):被一个或多个切面通知的而对象
AOP代理(AOP Proxy):AOP框架创建的对象,用来实现切面契约,执行动作,向目标对象应用通知之后创建的对象
织入(WeaVing):把切面连接到其它的应用程序类型或者对象上,并创建一个被通知的对象

通知的类型

前置通知:在某连接点之前执行的通知,这个通知不能组织连接点之前的执行流程
后置通知:在某连接点正常完成后执行的通知
异常通知:在方法抛出异常退出时执行的通知
最终通知:当某连接点退出的时候执行的通知(不论是正常返回还是异常退出)
环绕通知:保卫一个连接点的通知,如方法调用


文章作者: 小蜗龟
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 小蜗龟 !
评论
 本篇
初始Spring 初始Spring
一、Spring是什么Spring是一个开源框架,为了解决企业应用开发的复杂性而创建的,但现在已经不止应用于企业应用 是一个轻量级的控制反转和面向切面的容器框架 从大小和开销而言都是轻量级 提供了丰
2020-06-30
下一篇 
JAVA数据结构与算法基础学习笔记(四) JAVA数据结构与算法基础学习笔记(四)
树结构树结构概述什么是树结构为什么使用树结构树的基本概念二叉树:什么是二叉树 满二叉树:所有叶子节点都在最后一层,而且节点的总数为:2^n-1,n是树的高度。 完全二叉树:所有叶子节点都在最后一层或倒数第二层,且最后一层的叶子节点在左边连续
  目录