死磕-Spring Boot(二)

简介: 死磕-Spring Boot(二)

一、Java EE的缺点

java EE的诞生,结束了Web开发的技术无序状态,让程序员,架构师可以用同一种思维去思考如何架构和开发应用。

但是java EE也有其局限性:

①、过于复杂:因为Java EE针对的是复杂的分布式企业应用,然而现实情况是大部分应用都比较简单,而且复杂的架构带来了复杂的开发方式和部署方式。

②、追求分布式:大部分应用并非都是Java EE假定的分布式系统,像EJB,JMS,JWS等技术实现门槛又高又容易出错。Spring曾经就反对这种分布式架构,所以只提供了容器管理,大型应用采用分布式架构不可避免,Spring提供了其他的技术支持,比如支持RESTFul架构。

③、不能及时与流行开源技术结合,比如消息处理,除了有标准的JMS支持。

但是性能更好的RabbitMQ和Kafka。JavaEE没有与之更好的相应的标准,反而是Spring,具有统一的实现消息处理模式,无论用的是JMS,RabbitMQ,还是Kafka,都能快速上手。

④、Java EE应用服务器通常都是由商业公司提供,价格不菲,少有公司采用,而且自学部署应用对初学者是有一定的门槛。

二、你真的理解Spring吗?

①、Spring是为了解决应用复杂性而产生的框架。

②、它吸取了Java EE容器管理的优点,提供了Ioc容器来管理Bean。

③、通过AOP方式来增强Bean的功能。

④、它并没有像Java EE那样详细规定容器提供的是何种服务和容器里运行的具体组件的类型。

⑤、Spring只提供了两种机制,控制反转(Ioc)和面向切面(AOP),来提供任意的服务和增强Bean的任意特性,使得Spring本身可以容易掌握,并且可以通过Bean管理来控制无限扩展功能。

三、Spring IOC容器和AOP

Spring框架如同Java EE一样,包含了企业应用需要的各种技术,Spring本身提供了两个最核心的技术-IOC容器和AOP增强,如下图所示:

IOC:Spring Container负责管理你的任意的对象,并结合你对对象的描述进行初始化和加强。

例如:

①、对于用一个注解@Controller声明的对象,Spring会认为这个对象是个Web Controller。

②、如果这个对象里的方法有@RequestMapping注解,则会将客户端发起的HTTP请求转化成Java方法调用。

③、在上面的例子中,Spring容器在初始化HelloWorldController实例后,对于客户端发起的/sayHello.html请求,会执行say方法,并自动将请求参数按照say方法声明的名称一一对应上。

④、Spring通常提供一些

@Controller,@Service,@Component,@Configuration注解,只有使用这些注解的类才会引起Spring容器的注意,并根据注解含义来管理和增强对象。

⑤、Spring可以管理和增强任意对象,如常见的@Service注解对象,通常都是用来处理业务逻辑,Spring容器往往会增强这类对象的事务控制能力。

⑥、容器管理还可以被管理的Bean提供其他被管理和被增强的Bean,如一个已经被@Service注解的UserService类,在HelloWorldController类中,使用@Autowired自动注入这个实例。

AOP:上面提到的对象增强离不开AOP技术。

AOP是指面向切面编程,通过预编译方式或者运行时刻对目标对象动态添加功能,AOP分离了企业应用的业务逻辑和系统级服务。

①、比如:事务服务,还有应用系统的审计,安全访问等功能代码

②、比如:实现用户访问控制,可以对每个Controller的方法使用一个自定义的注解@Function,用Spring AOP向Controller每个方法动态的添加用户权限校验功能,代码如下:

上面的注解@Function是自定义的注解,接受一个字符串,表示Controller方法对象的业务功能,用户能否访问到user.add这个功能,可以在数据库中配置。

③、使用AOP对所有的Controller进行增强,代码如下:

四、Spring的缺点

①、使用门槛高,要入门Spring需要较长的时间。

②、对过时的技术兼容,导致使用复杂度升高。

③、XML配置已经不再是流行的系统配置方式。

④、集成第三方工具的时候,程序员还需要考虑工具之间的兼容性。

⑤、系统启动的时候,不具备热部署功能,完全依赖虚拟机或者Web服务器的热部署。

五、Spring Boot的诞生

对于Spring的缺点,尤其是上手难,技术使用不统一的两个缺点,Spring的开发者们推出了Spring Boot的框架。Spring Boot能够快速开发Web系统,也能容易地架构大的分布式系统。


今天先到这了,明天见~~

相关文章
|
4月前
|
Java Spring
聊一下Spring Boot配置的加载顺序
聊一下Spring Boot配置的加载顺序
55 0
|
2天前
|
Java 应用服务中间件 数据库
死磕-Spring Boot(一)
死磕-Spring Boot(一)
死磕-Spring Boot(一)
|
2天前
|
NoSQL Java Redis
死磕-Spring Boot(三)
死磕-Spring Boot(三)
|
2天前
|
前端开发 Java 应用服务中间件
死磕-Spring MVC(一)
死磕-Spring MVC(一)
|
消息中间件 Java Maven
当面试官问你Spring Boot 中的监视器是什么?把这篇文章甩给他
多年来,随着新功能的增加,spring 变得越来越复杂。只需访问 https://spring.io/projects 页面,我们就会看到可以在我们的应用程序中使用的所有 Spring 项目的不同功能。如果必须启动一个新的 Spring 项目,我们必须添加构建路径或添加 Maven 依赖关系,配置应用程序服务器,添加 spring 配置。因此,开始一个新的 spring 项目需要很多努力,因为我们现在必须从头开始做所有事情。
83 0
|
设计模式 消息中间件 JavaScript
Spring Boot 程序优化的 14 个小妙招!
Spring Boot 程序优化的 14 个小妙招!
|
Prometheus Cloud Native Java
Spring Boot 3.0 要来了,真心强!
Spring Boot 3.0 要来了,真心强!
|
SQL XML 前端开发
关于Spring Boot那些你不知道的真相!
spring的时候,带一下spring boot,有时候出去面试,也会问到spring boot,提的一个点,spring boot启动的时候一个流程图,本身他是spring这个项目发展到一定阶段之后的一个产物。
116 0
|
Dubbo JavaScript NoSQL
Spring Boot 都不懂,怎么跟面试官吹牛逼?
今天,正式介绍一下Java极客技术知识星球 SpringBoot 精髓之 SpringBoot-starter Spring 源码学习(八) AOP 使用和实现原理 Java:前程似锦的 NIO 2.0 java中List元素移除元素的那些坑
Spring Boot 都不懂,怎么跟面试官吹牛逼?
|
Java Spring
如何让你的Spring Boot屌炸天?(一)
大家好,我是指北君。今天就只有一个目的,就是要让你屌炸天!
如何让你的Spring Boot屌炸天?(一)