JAVA框架学习笔记(1)Spring

Spring框架是什么?

由于Spring用到一些概念,故先介绍一些预备知识

EJB是sun的JavaEE服务器端组件模型,设计目标与核心应用是部署分布式应用程序。简单来说就是把已经编写好的程序(即:类)打包放在服务器上执行。凭借java跨平台的优势,用EJB技术部署的分布式系统可以不限于特定的平台。EJB (Enterprise JavaBean)是J2EE(javaEE)的一部分,定义了一个用于开发基于组件的企业多重应用程序的标准。其特点包括网络服务支持和核心开发工具(SDK)。 在J2EE里,Enterprise Java Beans(EJB)称为Java 企业Bean,是Java的核心代码,分别是会话Bean(Session Bean),实体Bean(Entity Bean)和消息驱动Bean(MessageDriven Bean)。在EJB3.0推出以后,实体Bean被单独分了出来,形成了新的规范JPA。
会话Bean用于实现业务逻辑,它可以是有状态的,也可以是无状态的。每当客户端请求时,容器就会选择一个Session Bean来为客户端服务。Session Bean可以直接访问数据库,但更多时候,它会通过Entity Bean实现数据访问
实体Bean是域模型 [1] 对象,用于实现O/R映射,负责将数据库中的表记录映射为内存中的Entity对象,事实上,创建一个Entity Bean对象相当于新建一条记录,删除一个Entity Bean会同时从数据库中删除对应记录,修改一个Entity Bean时,容器会自动将Entity Bean的状态和数据库同步
消息驱动Bean是EJB2.0中引入的新的企业Bean,它基于JMS消息,只能接收客户端发送的JMS消息然后处理。MDB实际上是一个异步的无状态SessionBean,客户端调用MDB后无需等待,立刻返回,MDB将异步处理客户请求。这适合于需要异步处理请求的场合,比如订单处理,这样就能避免客户端长时间的等待一个方法调用直到返回结果。
EJB实际上SUN的J2EE中的一套规范,并且规定了一系列的API用来实现把EJB概念转换成EJB产品。(以上来自百度百科)

看到这里感觉EJB就是将业务处理中一些异步处理模块单独拿出来作为一个异步消息队列的样子,然后对数据库进行了一些映射(本人初学者,有错请指出,感谢呦)

Spring由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。
◆目的:解决企业应用开发的复杂性
◆功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能
◆范围:任何Java应用
Spring是一个轻量级控制反转(IoC)和面向切面(AOP)容器框架。

JAVA框架学习笔记(1)Spring_第1张图片
(图片来自atguigu.com的ppt)

控制反转/依赖注入:例如类A中要包含有一个类B的对象,以前都是在A中实例化B,然后调用这个对象;现在有了spring,可以只在A里面声明这个对象,不初始化(但是要在变量前加@Autowired),然后再xml文件里去写自己创建的对象,并将各个属性赋值(通过xml的方式),这样A就能够通过名称/类型实现自动装配(利用反射)。(若理解有误请指出,感谢呦)

面向切面:例如用户要访问一个页面,但是访问页面之前要判断一下用户是否登陆/要写日志,为了让程序员专注处理访问页面的代码,判断/日志就放到另一个函数中,每次执行到这个方法就先去执行那个函数,如果有多个页面需要判断/日志,都可以这样做,在spring中用注解配置需要加这个函数的范围即可(比如某个包/那么这个包下所有方法执行前都会先执行这个日志函数),而且还可以配置是在之前/后/中间执行。比较像JUNIT的@before/@after。(若理解有误请指出,感谢呦)

Spring还支持使用外部属性文件、和hibernate、mybatis、…结合使用。

Spring、Spring MVC、Spring boot的区别

另外一直搞不清楚Spring、Spring MVC、Spring boot的区别:
以下来自于博客:https://www.cnblogs.com/baizhanshi/p/8109664.html

spring boot就是一个大框架,里面包含了许许多多的东西,其中spring就是最核心的内容之一,当然就包含spring mvc。spring mvc 是只是spring 处理web层请求的一个模块。

因此他们的关系大概就是这样:

spring mvc < spring

spring boot 我理解就是把 spring、spring mvc、spring-data-jpa 等等的一些常用的常用的基础框架组合起来,提供默认的配置,然后提供可插拔的设计,就是各种 starter ,来方便开发者使用这一系列的技术,套用官方的一句话, spring 家族发展到今天,已经很庞大了,作为一个开发者,如果想要使用 spring 家族一系列的技术,需要一个一个的搞配置,然后还有个版本兼容性问题,其实挺麻烦的,偶尔也会有小坑出现,其实蛮影响开发进度, spring boot 就是来解决这个问题,提供了一个解决方案吧,可以先不关心如何配置,可以快速的启动开发,进行业务逻辑编写,各种需要的技术,加入 starter 就配置好了,直接使用,可以说追求开箱即用的效果吧.

spring 框架有超多的延伸产品例如 boot security jpa etc… 但它的基础就是 spring 的 ioc 和 aop ioc 提供了依赖注入的容器 aop 解决了面向横切面的编程 然后在此两者的基础上实现了其他延伸产品的高级功能

Spring MVC 呢是基于 Servlet 的一个 MVC 框架 主要解决 WEB 开发的问题 因为 Spring 的配置太复杂了 各种 XML JavaConfig hin 麻烦 于是懒人改变世界推出了 Spring boot 约定优于配置 简化了 spring 的配置流程.

Spring 最初利用“工厂模式”( DI )和“代理模式”( AOP )解耦应用组件。大家觉得挺好用,于是按照这种模式搞了一个 MVC 框架(一些用 Spring 解耦的组件),用开发 web 应用( SpringMVC )。然后有发现每次开发都要搞很多依赖,写很多样板代码很麻烦,于是搞了一些懒人整合包( starter ),这套就是 Spring Boot

新人一枚,轻喷!

你可能感兴趣的:(框架)