Java框架的思考
目前的JAVA 企业级开发框架,我们常用的大致包括IOC AOP MVC ORM框架
1、 IOC spring是一个非常棒的ico容器,其思想非常简单,用一个集合对象如MAP
来缓存对象(对象都是单例的),这也就是spring
所说容器内单例,它和java中的单例模式的区别在于单例模式是在当前java进程中保持单例,因为它有三个必要条件:private static
自身对象、private 构造方法、public static
getInstance()方法,以保持在进程中单例,而spring只能保证在容器中单例,用户是可以手动再new出其他对象的。所以这部分如果为了简
单可以不使用spring的ioc框架以单例模式替代,减少spring的jar包,缺点是可维护性和扩展性较差。或自己写一个ico容器以实现
spring的ico功能。
2、aop aop的实质是动态代理模型,框架包括spring、AspectJ等,当然最行的是spring,
spring有两种实现形式,一种是jdk的动态代理,一种是cglib字节码框架(比jdk的反射要快,其asm框架实现),典型的场景是数据库事务,
个人感觉aop的应用其实可以去掉。可维护性并没有提高,反而变更复杂。aop事务是在threadlocal是以threadlocal为基础的。关于
aop去或留希望各位讨论。
3、mvc框架 spring mvc struts2 这两个框架相比:spring
mvc的思想还是比较先进的,因为struts2的action bean不是单例的,每次通过反射new出一个对象,性能会相对较低。而spring
mvc controller是单例的,继承至servlet类(单例多纯种)。它的实现思想的是方法参数的注入。两个都支持模型驱动。spring
mvc有一个缺点,注解的配置模型全部用的java反射。性能也会有影响。两者都支持注解,个人认为xml要好于注解,开发阶段注解要优于xml,因为方
便,而维护起来可能会比较麻烦,尤其是对刚接手项目的新人。最好的方案是取两者之长,去其缺点,保留spring的单例通过方法注入,注入时将jdk反射
去掉,换成asm的注入思想,以提高性能。
4、ORM框架 hibernate
mybatis。hiberate是全自动的orm框架,优点是简单使用方便,但jar包很多,大数据SQL调优问题比较大。mybatis
由ibatis升级,半自动orm框架,需要手动写sql,优点是方便sql调试,缺点是对于简单的单表增删改也需要手动写SQL,比较麻烦。所以最好是
结合两个框架的优点开发一个单表的增删改orm(不依赖SQL),复杂SQL可以直接通过JDBC这样可以提高性能。
Java框架的思考的更多相关文章
- Java框架介绍-13个不容错过的框架项目
本文转自互联网,个人收藏所用. 下面,我们将一同分享各有趣且颇为实用的Java库,大家请任取所需.不用客气~ 1.极致精简的Java Bootique是一项用于构建无容器可运行Java应用的极简技术. ...
- 一点记忆—— Java框架知识的学习有感
一点记忆—— Java框架知识的学习有感 说一下自己学习的框架知识的历程吧:好久了,应该是一年前,也就是大三上的时候,我对于基本的 Java编程就已经达到所谓的“熟练”,认为自己可以在 ...
- Java 8 CompletableFuture思考
Java 8 CompletableFuture思考 最近一直在用响应式编程写Java代码,用的框架大概上有WebFlux(Spring).R2dbc.Akka...一些响应式的框架. 全都是Java ...
- 如何在Eclipse中查看JDK以及JAVA框架的源码(转载)
原文链接:http://www.cnblogs.com/outlooking/p/5243415.html 设置步骤如下: 1.点 “window”-> "Preferences&qu ...
- 如何查看JDK以及JAVA框架的源码
如何查看JDK以及JAVA框架的源码 设置步骤如下: 1.点 “window”-> "Preferences" -> "Java" -> &q ...
- 对java框架的几点认识
java框架实在是太多了,网上一抄一大段,根本就了解不到什么.我还是以我的经验来说一下j2ee的框架.1.首先力推struts2框架,这是最经典的框架(可以说没有“之一”).可以帮你快速搭建出一个MV ...
- 最简单的Java框架
框架framework的目的是定义骨架式方案,处理各种相同的底层细节:而开发人员使用框架时,能够依照自己的需求实现自己的功能--仅仅须要填入自己的东西/flesh. 最简单的框架,类似于JUnit,它 ...
- 2016年7款最流行的Java框架
虽然Java一直被唱衰,但是直到现在Java也坚持霸主地位不动摇,毫无疑问,Java是目前最热门的编程语言之一,所以我们为大家搜集了一些目前比较受欢迎的Java框架的消息. 根据RebelLabs对在 ...
- Java框架spring Boot学习笔记(六):Spring Boot事务管理
SpringBoot和Java框架spring 学习笔记(十九):事务管理(注解管理)所讲的类似,使用@Transactional注解便可以轻松实现事务管理.
随机推荐
- [翻译]15个最常见的WCF面试问题
WCF和ASMX WebService的区别是什么? 最基本的区别在于,ASMX或者ASP.NET WebService是用来通过基于HTTP的SOAP来实现通讯.但WCF可以使用任意协议(HTTP, ...
- lua5.3调用C/C++
马上面临毕业设计,打算做点跟网游有关的,先从做周边工具开始,目前正在做一个协议序列化和反序列化的东西,广告一波先: https://github.com/Anti-Magic/rproto 目前非常简 ...
- windows 2008 R2 Activition
无需破解:Windows Server 2008 R2 至少免费使用 900天 1.首先安装后,有一个180天的试用期. 2.在180天试用期即将结束时,使用下面的评估序列号激活Svr 2008 R2 ...
- sql中的inner join, left join, right join的区别
下面介绍一下 inner join, left join, right join这者之间的区别 现在我假设有A表和B表 left join select * from A a left join B ...
- String类中的equals()方法
在Java中,每一个对象都有一个地址空间,在这空间保存着这个对象的值. equals 比较的是值,==比较的地址以及值. 01: public class StringExample02: {03: ...
- 1021: [SHOI2008]Debt 循环的债务 - BZOJ
Description Alice.Bob和Cynthia总是为他们之间混乱的债务而烦恼,终于有一天,他们决定坐下来一起解决这个问题.不过,鉴别钞票的真伪是一件很麻烦的事情,于是他们决定要在清还债务的 ...
- Mybatis的分页查询
示例1:查询业务员的联系记录 1.控制器代码(RelationController.java) //分页列出联系记录 @RequestMapping(value="toPage/custom ...
- ANN中Precision-Recall权衡
如果想要得到较高的精度,则需要较长的编码. 编码长度m增长的话,则item碰撞的概率会成倍的减小,从而导致召回率下降. 为了得到较高的召回率,则需要多个哈希表. 参考http://yongyuan.n ...
- PAT-乙级-1045. 快速排序(25)
1045. 快速排序(25) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CAO, Peng 著名的快速排序算法里有一个经典的划分 ...
- 设置UINavigation的背景图片和背景颜色
//通过背景图片来设置背景 float systemVersion = [[[UIDevice currentDevice] systemVersion] floatValue]; UIImage * ...