2024年java基础框架总结

java基础框架总结一 Java 框架 1 简介 Java 框架是开发人员在用 Java 编程语言来创建应用时 所使用的一系列预编写代码 Java 框架是 Java 编程语言所特有的 是一个用于开发软件应用和 Java 程序的 Java 平台 Java 框架由一系列可重用的预编写代码组成 它们起着模板的作用 开发人员可以根据需要通过填充自定义代码来创建应用 框架创建后可反复使用

大家好,我是讯享网,很高兴认识大家。



一、Java 框架

1. 简介

Java 框架是开发人员在用 Java 编程语言来创建应用时,所使用的一系列预编写代码。

Java 框架是 Java 编程语言所特有的,是一个用于开发软件应用和 Java 程序的 Java 平台。

Java 框架由一系列可重用的预编写代码组成,它们起着模板的作用,开发人员可以根据需要通过填充自定义代码来创建应用。

框架创建后可反复使用,这样开发人员即可以在一定的结构上来编写应用,而无需从头开始手动创建。

Java 框架中可以包含预定义类(例如对象类别)和函数,用于处理、输入和管理硬件设备,以及与系统软件进行交互。当然,具体的框架内容要取决于框架的类型、Java 开发人员的技能水平、他们所要完成的工作以及自己的偏好。

2. 常见的 Java 框架

  • Spring
    Spring 排名第一,因为它具有出色的开发复杂 Web 应用程序的能力,并以高性能著称。它使 Java 开发人员能够轻松地创建企业级应用程序。Web 应用程序开发人员可以保证 Spring 框架的能力,这就是为什么 spring 成为 Java 开发人员最爱的原因。
  • Quarkus
    一个全堆栈 Java 框架,比较适合云原生、基于微服务的基础架构
  • Grails
    用 Groovy 编程语言编写,可为 Web 应用框架提供 HTML 和 CSS 插件的视图
  • Hibernate
    一个用于关系数据库管理的对象关系映射(ORM)框架,可利用 Java 数据库连接(JDBC)所提供的 API 执行 SQL 查询
  • Google Web Toolkit(GWT)
    用于连接前端/客户端与后端软件开发团队
  • Struts
    该框架帮助软件开发人员创建易于维护的企业级应用程序。这个框架的 USP 是它的插件。它们是 JAR 包,这意味着它们是可移植的。
    Hibernate 插件 和 spring 插件分别用于对象关系映射和依赖注入。使用此 Java 框架开发应用程序可以减少处理时间,因为它提供了组织良好的 Java、JSP 和 Action 类。
  • 等等

本篇文章主要对 Spring 进行总结

二、Spring

ssh = spring + struts + hibernate
ssm = spring + springmvc + mybatis
spring全家桶:脚⼿架框架springboot、微服务框架springcloud等等

1. Spring 概述

1.1. 简介

Spring 是分层的 full-stack(全栈) 轻量级开源框架,以 IoC 和 AOP 为内核,提供了展现层 SpringMVC 和业务层事务管理等众多的企业级应⽤技术,还能整合开源世界众多著名的第三⽅框架和类库,已经成为使⽤最多的 Java EE 企业应⽤开源框架。
Spring 官⽅⽹址:http://spring.io/
我们经常说的 Spring 其实指的是Spring Framework(spring

1.2. Spring 的优势

  • ⽅便解耦,简化开发
    通过Spring提供的IoC容器,可以将对象间的依赖关系交由Spring进⾏控制,避免硬编码所造成的过度程序耦合。⽤户也不必再为单例模式类、属性⽂件解析等这些很底层的需求编写代码,可以更专注于上层的应⽤。
  • AOP编程的⽀持
    通过Spring的AOP功能,⽅便进⾏⾯向切⾯的编程,许多不容易⽤传统OOP实现的功能可以通过AOP轻松应付。
  • 声明式事务的⽀持
    @Transactional
    可以将我们从单调烦闷的事务管理代码中解脱出来,通过声明式⽅式灵活的进⾏事务的管理,提⾼开发效率和质量。
  • ⽅便程序的测试
    可以⽤⾮容器依赖的编程⽅式进⾏⼏乎所有的测试⼯作,测试不再是昂贵的操作,⽽是随⼿可做的事情。
  • ⽅便集成各种优秀框架
    Spring可以降低各种框架的使⽤难度,提供了对各种优秀框架(Struts、Hibernate、Hessian、Quartz等)的直接⽀持。
  • 降低JavaEE API的使⽤难度
    Spring对JavaEE API(如JDBC、JavaMail、远程调⽤等)进⾏了薄薄的封装层,使这些API的使⽤难度⼤为降低。
  • 源码是经典的 Java 学习范例
    Spring的源代码设计精妙、结构清晰、匠⼼独⽤,处处体现着⼤师对Java设计模式灵活运⽤以及对Java技术的⾼深造诣。它的源代码⽆意是Java技术的**实践的范例

1.3. Spring 的核⼼结构

Spring是⼀个分层⾮常清晰并且依赖关系、职责定位⾮常明确的轻量级框架,主要包括⼏个⼤模块:数据处理模块、Web模块、AOP(Aspect Oriented Programming)/Aspects模块、Core Container模块和 Test 模块,如下图所示,Spring依靠这些基本模块,实现了⼀个令⼈愉悦的融合了现有解决⽅案的零侵⼊的轻量级框架。

image.png
  • Spring核⼼容器(Core java基础框架总结 Container) 容器是Spring框架最核⼼的部分,它管理着Spring应⽤中bean的创建、配置和管理。在该模块中,包括了Spring bean⼯⼚,它为Spring提供了DI的功能。基于bean⼯⼚,我们还会发现有多种Spring应⽤上下⽂的实现。所有的Spring模块都构建于核⼼容器之上。
  • ⾯向切⾯编程(AOP)/Aspects Spring对⾯向切⾯编程提供了丰富的⽀持。这个模块是Spring应⽤系统中开发切⾯的基础,与DI⼀样,AOP可以帮助应⽤对象解耦。
  • 数据访问与集成(Data Access/Integration)Spring的JDBC和DAO模块封装了⼤量样板代码,这样可以使得数据库代码变得简洁,也可以更专注于我们的业务,还可以避免数据库资源释放失败⽽引起的问题。 另外,Spring AOP为数据访问提供了事务管理服务,同时Spring还对ORM进⾏了集成,如Hibernate、MyBatis等。该模块由JDBC、Transactions、ORM、OXM 和 JMS 等模块组成。
  • Web 该模块提供了SpringMVC框架给Web应⽤,还提供了多种构建和其它应⽤交互的远程调⽤⽅案。 SpringMVC框架在Web层提升了应⽤的松耦合⽔平。
  • Test 为了使得开发者能够很⽅便的进⾏测试,Spring提供了测试模块以致⼒于Spring应⽤的测试。 通过该模块,Spring为使⽤Servlet、JNDI等编写单元测试提供了⼀系列的mock对象实现。

二、核⼼思想

2.1. IoC

IoC Inversion of Control (控制反转/反转控制),注意它是⼀个技术思想,不是⼀个技术实现
描述的事情:Java开发领域对象的创建,管理的问题
传统开发⽅式:⽐如类A依赖于类B,往往会在类A中new⼀个B的对象
IoC思想下开发⽅式:我们不⽤⾃⼰去new对象了,⽽是由IoC容器(Spring框架)去帮助我们实例化对象并且管理它,我们需要使⽤哪个对象,去问IoC容器要即可
我们丧失了⼀个权利(创建、管理对象的权利),得到了⼀个福利(不⽤考虑对象的创建、管理等⼀系列事情)
为什么叫做控制反转?
控制:指的是对象创建(实例化、管理)的权利
反转:控制权交给外部环境了(spring框架、IoC容器)

image.png

IoC解决了什么问题?
IoC解决对象之间的耦合问题

IoC和DI的区别?
DI:Dependancy Injection(依赖注⼊)
IOC和DI描述的是同⼀件事情,只不过⻆度不⼀样罢了

IoC是站在对象的角度,对象实例化及管理的权限交给(反转)给容器

DI是站在容器的角度,容器会把对象依赖的其他对象注入(送进来),比如A实例化的过程中依赖,那么就需要把B对象注入给A

image.png

2.2. AOP

简介

AOP: Aspect oriented Programming ⾯向切⾯编程/⾯向⽅⾯编程
AOP是OOP的延续,从OOP说起
OOP三⼤特征:封装、继承和多态
oop是⼀种垂直继承体系

横切逻辑代码存在什么问题:

  • 横切代码重复问题
  • 横切逻辑代码和业务代码混杂在⼀起,代码臃肿,维护不⽅便

AOP出场,AOP独辟蹊径提出横向抽取机制,将横切逻辑代码和业务逻辑代码分析

image.png
AOP解决什么问题

在不改变原有业务逻辑情况下,增强横切逻辑代码,根本上解耦合,避免横切逻辑代码重复

为什么叫做切面编程

三、 手写实现 IoC & AOP

待补充案例

四、 Spring IOC 应用

4.1. Spring IoC基础

bean 的定义方式

  • 纯xml
    bean的信息全部配置在xml中
  • xml+注解
    部分bean 使用xml定义,部分bean使用注解
  • 纯注解
    所有的bean都是注解定义

通过反射技术来实例化对象并维护对象之间的依赖关系

  • JavaSE应用
    ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml");
    或者 new FileSystemXmlApplicationContext("c:/beans.xml")
  • JavaWeb应用
    ContextLoaderListener
BeanFactory与ApplicationContext区别

五、Spring 声明式事务的⽀持

5.1. 事务回顾

1. 事务概念

事务指逻辑上的⼀组操作,组成这组操作的各个单元,要么全部成功,要么全部不成功。从⽽确保了数据的准确与安全。

2. 事务的四⼤特性
  • 原⼦性(Atomicity) 原⼦性是指事务是⼀个不可分割的⼯作单位,事务中的操作要么都发⽣,要么都不发⽣。从操作的⻆度来描述,事务中的各个操作要么都成功要么都失败
  • ⼀致性(Consistency) 事务必须使数据库从⼀个⼀致性状态变换到另外⼀个⼀致性状态。
    例如转账前A有1000,B有1000。转账后A+B也得是2000。
    ⼀致性是从数据的⻆度来说的,(1000,1000) (900,1100),不应该出现(900,1000)
  • 隔离性(Isolation) 事务的隔离性是多个⽤户并发访问数据库时,数据库为每⼀个⽤户开启的事务,每个事务不能被其他事务的操作数据所⼲扰,多个并发事务之间要相互隔离。
    ⽐如:事务1给员⼯涨⼯资2000,但是事务1尚未被提交,员⼯发起事务2查询⼯资,发现⼯资涨了2000块钱,读到了事务1尚未提交的数据(脏读)
  • 持久性(Durability)
    持久性是指⼀个事务⼀旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发⽣故障也不应该对其有任何影响。
3. 事务的隔离级别
  • 脏读:⼀个线程中的事务读到了另外⼀个线程中未提交的数据。
  • 不可重复读:⼀个线程中的事务读到了另外⼀个线程中已经提交的update的数据(前后内容不⼀样)
  • 虚读(幻读):⼀个线程中的事务读到了另外⼀个线程中已经提交的insert或者delete的数据(前后条数不⼀样)

数据库共定义了四种隔离级别:

  • Serializable(串⾏化):可避免脏读、不可重复读、虚读情况的发⽣。(串⾏化) 最⾼
  • Repeatable read(可重复读):可避免脏读、不可重复读情况的发⽣。(幻读有可能发⽣) 第⼆该机制下会对要update的⾏进⾏加锁
  • Read committed(读已提交):可避免脏读情况发⽣。不可重复读和幻读⼀定会发⽣。 第三
  • Read uncommitted(读未提交):最低级别,以上情况均⽆法保证。(读未提交) 最低

MySQL的默认隔离级别是:REPEATABLE READ

4. 事务的传播⾏为
传播行为 具体描述 PROPAGATION_REQUIRED 如果当前没有事务,就新建⼀个事务,如果已经存在⼀个事务中加⼊到这个事务中。这是最常⻅的选择。 PROPAGATION_SUPPORTS ⽀持当前事务,如果当前没有事务,就以⾮事务⽅式执⾏。 PROPAGATION_MANDATORY 使⽤当前的事务,如果当前没有事务,就抛出异常。 PROPAGATION_REQUIRES_NEW 新建事务,如果当前存在事务,把当前事务挂起。 PROPAGATION_NOT_SUPPORTED 以⾮事务⽅式执⾏操作,如果当前存在事务,就把当前事务挂起。 PROPAGATION_NEVER 以⾮事务⽅式执⾏,如果当前存在事务,则抛出异常。 PROPAGATION_NESTED 如果当前存在事务,则在嵌套事务内执⾏。如果当前没有事务,则执⾏与PROPAGATION_REQUIRED类似的操作。

5.2. Spring中事务的API

  • mybatis: sqlSession.commit();
  • hibernate: session.commit();
  • PlatformTransactionManager
 
讯享网 

此接⼝是Spring的事务管理器核⼼接⼝。Spring本身并不⽀持事务实现,只是负责提供标准,应⽤底层⽀持什么样的事务,需要提供具体实现类。此处也是策略模式的具体应⽤。在Spring框架中,也为我们内置了⼀些具体策略,例如:DataSourceTransactionManager , HibernateTransactionManager 等等。( 和 HibernateTransactionManager 事务管理器在 spring-orm-5.1.12.RELEASE.jar 中)
Spring JdbcTemplate(数据库操作⼯具)、Mybatis(mybatis-spring.jar)————>
DataSourceTransactionManager、Hibernate框架 ——————> HibernateTransactionManager、DataSourceTransactionManager 归根结底是横切逻辑代码,声明式事务要做的就是使⽤Aop(动态代理)来将事务控制逻辑织⼊到业务代码

5.3. Spring 声明式事务配置

纯xml
讯享网
基于XML+注解
  • xml
 
  • 在接⼝、类或者⽅法上添加@Transactional注解
    @Transactional(readOnly = true,propagation = Propagation.SUPPORTS)
基于纯注解
小讯
上一篇 2024-12-24 14:59
下一篇 2024-12-27 18:00

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/9374.html