Spring的一些思考

《Spring入门经典》 Beginning Spring
https://blog.csdn.net/wn084/article/details/80729230
https://www.cnblogs.com/shitou911013/p/11009600.html
https://blog.csdn.net/qq_33535433/article/details/78992353
https://blog.csdn.net/cs408/article/details/48971097
https://blog.csdn.net/qq125281823/article/details/83502754


在学习Spring时产生了一些思考,这里记录一下自己目前的理解

J2EE、EJB、POJO、JNDI、Java EE?

  • J2EE是早期一个将多种不同技术融合在一起形成企业级Java环境的总体规范,而EJB是其中能与运行时平台结合的分布式业务组件模型,是J2EE规范中的主要规范。
  • EJB通常指EJB技术、EJB框架,也可理解为EJB容器,管理EJB组件。我们称EJB为重量级容器是因为EJB组件与EJB容器、框架耦合度很高,测试组件功能依赖容器,部署繁琐。
  • 到EJB3时代,引入了POJO编程模型,与EJB编程模型相对应,Plain Old Java Objects不需要依赖任何特定环境。
  • JNDI Java Naming and Directory Interface是J2EE规范中的另一个重要规范,可理解为J2EE的上下文,在上下文中可以通过对象名称和特性来管理对象并使用JNDI来访问对象
  • Java EE是Java 5 发布之后的新名称

Spring、Spring MVC、Java Web、Servlet?

  • 随着POJO编程模型的发展,轻量级框架、容器Spring诞生,提供了所需中间件服务的环境如事物管理、安全性、线程管理、持久性、远程处理等,而组件原先相互之间的依赖关系以及装配由Spring容器统一管理,这也是控制反转 IoC的重要概念,其中依赖查找和依赖注入是两种具体的表现形式
  • Web有很多开发框架如著名的Struts,而Spring MVC是Spring的子项目,也是一种Web开发框架,核心是Dispatcher Servlet
  • Java Web应用由一组Servlet、HTML页、类、以及其它可以被绑定的资源构成。它可以在各种供应商提供的实现Servlet规范的Servlet容器中运行。

Servlet容器、Web容器、Web服务器?

  • Servlet需要有Servlet容器的支持,帮我们提供通信、生命周期、多线程等功能。Tomcat就包含Servlet容器功能。
  • Web容器包含有多个Servlet容器,部署多个Web应用,还包括管理HTML页和其他一些资源等,Tomcat是一个Web容器。
  • Web服务器如Apache、IIS、Nginx,不局限于Java Web应用了,提供Web服务的,概念最大。

Spring Security、Session、Cookie?

  • Spring Security是基于Servlet过滤器的一种安全框架 ,使得Web项目不依赖于目标环境,提供了许多即插即用的身份验证和授权功能,相当于用户请求到Servlet前设置的一道墙。而Spring MVC中,用户请求正是到Servlet,并实现url地址映射到具体Controll层。
  • Session是HTTP协议中的概念,浏览器第一次请求服务器,服务器会为客户端创建一个Session,并返回客户端sessionId。当客户端下次请求,浏览器会在头部带上这个sessionId。服务器可以根据存储在缓存或者持久化的session中进行识别sessionId,这时我们称服务器是有状态的。
  • 一般我们称浏览器存储sessionId的叫Cookie,服务器叫Session。Cookie和Session的区别还在于Cookie有大小限制4kb,并且可能存在csrf攻击,没有Session安全

Spring boot ?

  • Spring boot或者称为Spring boot框架,是基于Spring 4.0打造的全新框架。不仅继承了Spring的优秀特性,还简化配置达到开箱即用和约定优于配置。通过使用java配置替代了web.xml配置,并且内嵌了tomcat容器,使得Java Web开发更加简单,可直接运行jar而不必再部署容器

JVM、JRE、JDK?

  • JVM即Java虚拟机,相当于操作系统,在虚拟机之上运行着Java应用程序比如Web容器Tomcat。每一个Java应用程序都会有一个JVM进程,和若干自己的线程。
  • JRE=JVM+基础类库,称为Java运行时环境
  • JDK是Java开发工具,又包含了JRE

Java Web 多线程、Spring线程安全、数据库事务?

  • Servlet体系结构是建立在Java多线程机制之上的,它的生命周期是由Web容器负责的。也就是说Servlet容器为我们实现和管理多线程。
  • Spring默认管理的bean都是单例,那为什么很少出现线程安全问题?原因在于实体bean并没有纳入Spring管理,每一次都是new出来的,而共享的单例基本都是业务处理类,这些业务处理类基本都是通过方法传递处理数据,所以数据是被隔离开的。但是如果业务处理类含有属性成员变量,那就会引发线程安全问题,这也是我们一般不在业务处理类定义成员变量的原因。
  • 数据问题,除了有可能是线程安全外,还有可能是数据库事务。数据库事务属于另一个话题,Spring也有提供事务的管理,参考Spring事物的一些笔记(六)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值