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注解便可以轻松实现事务管理.
随机推荐
- Python 中的引用和类属性的初步理解
最近对Python 的对象引用机制稍微研究了一下,留下笔记,以供查阅. 首先有一点是明确的:「Python 中一切皆对象」. 那么,这到底意味着什么呢? 如下代码: #!/usr/bin/env py ...
- WPF中利用后台代码实现窗口分栏动态改变
在WPF中实现窗口分栏并能够通过鼠标改变大小已经非常容易,例如将一个GRID分成竖排三栏显示,就可以将GRID先分成5列,其中两个固定列放GridSplitter. <Grid Backgrou ...
- Pop Sequence (栈)
Pop Sequence (栈) Given a stack which can keep M numbers at most. Push N numbers in the order of 1, ...
- (转)《深入理解java虚拟机》学习笔记3——垃圾回收算法
Java虚拟机的内存区域中,程序计数器.虚拟机栈和本地方法栈三个区域是线程私有的,随线程生而生,随线程灭而灭:栈中的栈帧随着方法的进入和退出而进行入栈和出栈操作,每个栈帧中分配多少内存基本上是在类结构 ...
- swift基础--变量
(1)变量与常量 (2)基本类型 (3)强制转换 (4)Bool类型 (5)元组 (6)可选值 //变量和常量 var str = "Hello, playground" let ...
- CoInitialize()、CoInitializeEx()和AfxOleInit()区别联系
CoInitialize()和AfxOleInit() 都是初始化COM库,不同之处在与: OLE是建立在COM之上的技术,层次比COM要高.AfxOleInit()调用的是OleInitialize ...
- wordpress换域名后无法登陆的解决方案
第一步:登录到你的数据库管理页面,找到wp_options表: 第二步:将表中的siteurl和home字段的值修改为当前的新域名,siteurl值的修改和home值的修改同理.如下图:
- 过长文字自动换行的技巧 Word-Break Word-Wrap
在很多时候,为了防止内容过长把表格或容器撑破, 我们都需要为容器加上自动换行的功能. 实现自动换行,用CSS来实现,通常有两种方式: word-break: 取值为 normal, break-all ...
- 839. Optimal Marks - SPOJ
You are given an undirected graph G(V, E). Each vertex has a mark which is an integer from the range ...
- Detect loop in a singly linked list
去Twitter面试的被问到这个问题,当时只想到了用HashMap的办法,这种办法时间复杂度O(n),空间复杂度是O(n), 更好的办法是用 FastRunner / SlowRunner appro ...