互联网轻量级框架简介

news/2024/7/10 21:11:01 标签: 互联网, spring, redis, mvc, java

开题总算是结束了,可以舒一口气了~~
今天整理了一下现在互联网下Java web框架的简介,目前最流行的应该是ssm(spring,spring mvc和mybatis)+redis结构。下面将对其逐个进行简要介绍。
Spring IoC:
Inversion of Control控制反转,IoC是一个容器,在Spring中,它会认为一切JAVA资源都是Java Bean,容器的目标是管理这些Bean和它们之间的关系。
它不使用new的方式来创建对象(不是人为的主动创建),而是使用配置的方式,让Spring IoC自己通过配置去找。需要的资源(Bean)通过描述信息得到,其中控制权在Spring IoC容器中,它会根据描述找到使用者需要的资源,这就是控制反转。好处:接口不再依赖于某个实现类,需要使用某个实现类时我们通过配置信息就可以完成。
代码实现:

Socket socket = new Socket1();
user.setSocket(socket);
user.useSocket();

弊端:如果不用Socket1了,改用2了,就要更改代码。
配置实现:

<bean id = "socket" class = "Socket1"/>
<bean id = "user" class = "xxx.User">
     <property name = "socket" ref = "socket" />
</bean>

Spring AOP
面向切面,AOP常用于数据库事务的编程,它以异常作为消息,只要Spring姐收到了异常消息,它就会将数据库回滚,保证数据的一致性。它不需要关注数据库代码、trycatch,只需关注业务代码,知道要发生异常,Spring会回滚事务就足够了。

MyBatis:
前身是iBatis,几乎可以代替JDBC,同时提供了接口编程。目前MyBatis的数据访问层DAO是不需要实现类的,它只需要一个接口和XML(或注解)。它提供了自动映射,动态SQL,级联,缓存,注解,代码和SQL分离等特性,使用方便,同时可以对SQL进行优化。
MyBatis与Hibernate对比:
把POJO对象和数据库表相互映射的框架成为对象关系映射(ORM)。
MyBatis和Hibernate都是ORM框架,但Hibernate的设计理念是完全面向POJO的,而Mybatis不是。
Hibernate基本不再需要编写SQL就可以通过映射关系来操作数据库,是一种全表映射的体现,它将POJO与数据库表对应。当多表关联超过3个时,通过Hibernate级联会造成太多性能的丢失,或不能灵活变化
而Mybatis需要我们提供SQL去运行,它也需要一个映射文件把POJO和数据库表对应起来。

Spring MVC:
与Spring核心IoC,AOP无缝衔接,重点在于他的流程和一些重要的注解,包括控制器、视图解析器、视图等重要内容。

Redis:
它是互联网中最为流行的NoSQL(Not Only SQL),它具备一定持久层的功能,也可以作为一种缓存工具。作为持久层,它存储的数据是半结构化的,读入速度更快;作为缓存,它可以支持大数据存入内存中,只要命中率搞,就能快速响应。
优点:
1.响应快速。
2.它支持6种数据类型:字符串、哈希结构、列表、集合、可排序集合和基数。数据类型少,使用规则就少,需要判断和逻辑就少,读写速度更快。
3.它所有操作都是原子的。确保了当2个客户同时访问Redis服务器时,得到的是更新后的值(最新值)。
4.MultiUtility工具:它可以在缓存、消息传递队列中使用(支持”发布+订阅”的消息模式),在应用程序中使用。

最后,总结一下SSM+Redis结构的各部分功能:
Spring IoC承担了资源管理、整合、即插即拔的功能。
Spring AOP提供切面管理,特别是数据库事务管理的功能。
Spring MVC把模型、视图和控制器分层,组合成一个有机灵活的系统
MyBatis提供一个数据库访问的持久层,通过MyBatis-Spring项目,以便能和Spring无缝对接
Redis作为缓存工具,提供了高速处理数据和缓存数据的功能,使得系统大部分只需要访问缓存,而无须从数据库磁盘中重复读写。一些需要高速运算的场合中,也可以先用它来完成运算,再把数据批量存入数据库。


http://www.niftyadmin.cn/n/1358101.html

相关文章

阿里测试开发实习生面经

一面&#xff1a; 之前同学内推了阿里的测试开发岗位&#xff0c;也许由于内推时部门写的是阿里集团&#xff0c;所以隔了一个月才接到阿里的面试。因为不在杭州&#xff0c;所以方式是电面。先是一位小姐姐打电话来约面试时间&#xff0c;说话非常的温柔&#xff0c;态度…

java.lang.IllegalArgumentException非法参数异常

今天做SpringMVC demo时&#xff0c;运行时突然报500servlet初始化异常&#xff0c;查阅百度很多都是说配置文件出错&#xff0c;仔细查看web.xml以及springmvc.xml后发现并无问题&#xff0c;然后发现非法参数异常&#xff0c;这才醒悟&#xff0c;直接拷的很久以前的spring3.…

sql面试笔试题

转载自&#xff1a;http://bbs.csdn.net/topics/280002741 表架构 Student(Sid,Sname,Sage,Ssex) 学生表 Course(Cid,Cname,Tid) 课程表 SC(Sid,Cid,score) 成绩表 Teacher(Tid,Tname) 教师表 建表语句 CREATE TABLE student ( sid INT, sname nvarchar(32), sage I…

session共享问题(分布式如何实现session共享)

参考链接&#xff1a;https://blog.csdn.net/sxiaobei/article/details/57086489 问题描述&#xff1a;一个用户在登录成功以后会把用户信息存储在session当中&#xff0c;这时session所在服务器为server1&#xff0c;那么用户在session失效之前如果再次使用app&#xff0c;那…

计算机类期刊投稿经验

本文写作目的主要是为了给准备投中文期刊的朋友们参考&#xff0c;主要是博主的亲身经验以及周围同学朋友的经验总结&#xff0c;之前也看过网上的投稿经验&#xff0c;但是都很老&#xff0c;很多都已经变了&#xff0c;希望能给大家带来帮助。 首先说一下思路&#xff0c;如…

代码建议

今天回顾了上个月参加苏小研夏令营时做得简单的项目&#xff0c;指导老师最后给了我们一些代码方面的建议&#xff0c;我把感觉比较通用的要点罗列如下&#xff1a; 1. 用log替换sout 2.optimize imports 3.IDE中代码为灰色的地方按照建议修改 4.字符串用enum或final strin…

操作系统知识点整理

今天回顾之前本科时候期末考试整理的知识点&#xff0c;并整理在此&#xff1a; 一&#xff0e;概述 1.操作系统的定义: 管理系统资源、控制程序执行、改善人机界面、提供各种服务&#xff0c;并合理组织计算及工作流程的和为用户方便而有效地使用计算机提供良好运行环境的最…

背包问题Java

背包问题是动态规划类求解的一个典型问题&#xff0c;我们要先找到该问题的局部解然后扩展到全局解。这里讲解的是0-1背包。先看一下情景&#xff0c;假如一个小偷携带者一个可以放10kg重的背包&#xff0c;潜入一户人家行窃&#xff0c;家里有4个物品&#xff0c;每个物品只有…