开题总算是结束了,可以舒一口气了~~
今天整理了一下现在互联网下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作为缓存工具,提供了高速处理数据和缓存数据的功能,使得系统大部分只需要访问缓存,而无须从数据库磁盘中重复读写。一些需要高速运算的场合中,也可以先用它来完成运算,再把数据批量存入数据库。