回顾Spring

回顾Spring

概述

​ spring是分层的JavaSE/EE应用full-stack轻量级开源框架,以Ioc和Aop为内核,提供了展现层(SpringMVC)和持久层(JdbcTemplate)以及业务层事务管理等众多的企业及应用技术,还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多的JavaEE企业应用开源框架.

​ bean工厂+灵活装配+动态行为拼接,成就spring在java框架中的一哥地位。

优势

  1. 方便解耦,简化开发

  2. AOP编程支持

  3. 声明式事务

  4. 方便程序测试

  5. 方便集成各种优秀框架

    降低各种框架的使用难度(Struts、Hibernate、Hessian、Quartz等).

  6. 降低JavaEEAPI使用难度

    Spring对JavaEEAPI(如JDBC、JavaMail、远程调用等)进行了薄薄的封装层,使这些API的使用难度大大降低.

  7. Java源码是经典学习案例

    Spring源代码设计精妙、结构清晰、匠心独用,处处体现着大师对Java设计模式灵活运用以及对Java技术的高深造诣.他的源代码无疑是Java技术的最佳实践的范例.

体系结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-31iZSYhF-1594778521129)(/Users/zoujidi/Library/Application Support/typora-user-images/image-20200707223259299.png)]

IOC(Inversion Of Control)

把创建对象的权利交给框架,是框架的重要特征,并非面向对象的专业术语。它包括依赖注入(Dependency Injection,简称DI)和依赖查找(Dependency Lookup)

无BeanFactory前:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-syV6XGwT-1594778521131)(/Users/zoujidi/Library/Application Support/typora-user-images/image-20200708200823182.png)]

有了BeanFactory后(减少程序间的耦合):

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EX0fcOTk-1594778521133)(/Users/zoujidi/Library/Application Support/typora-user-images/image-20200708200838521.png)]

这种被动的方式获取对象的思想就是控制反转,它是spring框架的核心之一。

明确IOC的作用:

​ 削减计算机中的耦合(解除我们代码中的依赖关系)。

基于注解的IOC配置

xml或注解,仅仅是配置的形式不一样.实现功能都一样,都要达到解耦的目的.

事务控制

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7Fmori3D-1594778521135)(/Users/zoujidi/Library/Application Support/typora-user-images/image-20200712211159140.png)]

AOP

全称:Aspect Oriented Programming,即面向切面编程。

作用:在程序运行期间,不修改源代码的基础上对已有方法进行增强。

优势:减少重复代码;提高开发效率:维护方便。

在spring中,框架会根据目标类是否实现了接口来决定用哪种动态代理的方式。

AOP相关概念:

​ 1、Joinpoint:连接点,所谓连接点是指那些被拦截到的点。在spring中,这些点指的是方法,因为spring只支持方法类型的连接点

​ 2、Pointcut:切入点,所谓切入点是指我们要对哪些Joinpoint进行拦截的定义。

​ 3、Advice:(通知/增强),所谓通知是指拦截到Joinpoint之后要做的事情就是通知。

​ 通知的类型:前置通知、后置通知、异常通知、最终通知、环绕通知

image-20200713150512114

​ 4、Introduction:引介,引介是一种特殊的通知,在不修改类代码的前提下,Introduction可以在运行期为类动态的添加一些方法或者Field

​ 5、Tartget:目标对象,代理的目标对象

​ 6、Weaving:织入,是指把增强应用到目标对象来创建新的代理对象的过程。

​ spring采用动态代理织入,而AspectJ采用编译器织入和类装载期织入。

​ 7、Proxy:代理,一个类被AOP织入增强后,就产生了一个结果代理类。

​ 8、Aspect:切面,是切入点和通知(引介)的结合。

JdbcTemplate

他是spring框架中提供的一个对象,是对原始Jdbc API对象的一个简单封装。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Xc4QFyzn-1594778521136)(/Users/zoujidi/Library/Application Support/typora-user-images/image-20200713220332774.png)]

spring框架为我们提供了很多操作的模板类:

操作关系型数据库的:

​ JdbcTemplate、

​ HibernateTemplate

操作nosql数据库的:

​ RedisTemplate

操作消息队列的:

​ JmsTemplate

jdbcTemplate作用:用于和数据库交互的,实现对表的CRUD操作

image-20200714102722327

Spring的事务控制

我们需要明确:

1、JavaEE的分层开发,事务处理位于业务层,spring提供了分层设计中业务层的事务处理方案;

2、spring框架为我们提供了一组业务处理接口,接口位于spring-tx.xxx.jar中;

3、spring的事务控制都是基于aop的,他既可以使用编程的方式实现,也可以使用配置的方式实现,重点掌握配置的方式

jdk8(@Nullable和@NotNull)

用@Nullable和@NotNull注解来显示表明可以空的参数和以及返回值,这样就可以在编译的时候处理空值而不是在运行的时候抛出NullPointerExceptions。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值