文档章节

再说spring比较重,臃肿的看此文!!!!!

光石头
 光石头
发布于 2012/12/14 13:21
字数 380
阅读 1703
收藏 13

 

springrain地址:http://git.oschina.net/chunanyong/springrain

spring的强大灵活+jfinal的开发效率!

我的博客:http://www.weicms.net/2012/12/14/spring_super.html

 

在ssh中,我认为spring是唯一值得用的框架

spring mvc 的优点可以自行在网络搜索,特别是3.0之后......我不认为spring 的controller会比其他的差!!!!

spring的良好的扩展性,集成度,IOC,AOP事务,已经是项目的基础条件

我实在无法忍受各种软文说spring 太厚重,臃肿了.以下代码是我的测试用例.我还真是没明白,spring复杂到哪了!!!

controller service  dao Entity 都使用注解,就极简而言,一个数据库只需要一个Dao,一个Service 而已!!!

//就极简而言,一个数据库只需要一个Service,就可以查询这个数据库的任意一张表
//@Test 返回一个基本类型
public void testObject() throws Exception{
	Finder finder=new Finder("select id from [Users] where 1=1 ");
	finder.append("and userId=:userId").setParam("userId", 125);
Integer id = baseFangService.queryForObject(finder, Integer.class);
System.out.println(id);

}


//@Test 返回一个Entity
public void testObjectUser() throws Exception{
	Finder finder=new Finder("select * from Users where id=125 order by id");
	Users u = baseFangService.queryForObject(finder, Users.class);
    System.out.println(u.getName());

}
//@Test 调用存储过程并返回 Map
public void testProc() throws Exception{
	Finder finder=new Finder();
	finder.setParam("unitId", 0);
	finder.setProcName("proc_myproc");
	Map queryObjectByProc = (Map) baseFangService.queryObjectByProc(finder);
	System.out.println(queryObjectByProc.get("#update-count-10"));
	
}
//@Test 调用数据库函数,并返回结果
public void testFunction() throws Exception{
	Finder finder=new Finder();
	
	finder.setFunName("fun_userId");
	finder.setParam("userId", 125);
	String userName= baseFangService.queryForObjectByByFunction(finder,String.class);
	System.out.println(userName);
	

}

//@Test  保存一个对象
public void testRoleModel() throws Exception{
		Re_Role_Model re=new Re_Role_Model();
		re.setRoleId("user");
		re.setBool(1);
		baseFangService.save(re);
	
	
}

© 著作权归作者所有

共有 人打赏支持
光石头

光石头

粉丝 317
博文 92
码字总数 17546
作品 2
郑州
程序员
加载中

评论(18)

哈库纳
哈库纳
Spring 本身不臃肿,觉得它臃肿是由于在分析 Spring 代码时候感觉上层次过深而导致的,这个问题是思维习惯和思维方式导致的。

国内人没有那种全部面向接口编程的习惯,所以觉得 Spring 代码臃肿。说到底是文化不同导致的。

不过个人觉得,Spring 本身已经是一套非常完备的体系。真的没有必要在进行二次封装。我是从两个方面考虑的:
1.Spring 本身提供了一种编程方式,遵循约定的编程方式可以极大的减少开发成本。二次封装之后相当于为开发者又提供了另外一套编程风格,这会使开发者陷入两套编程方式的思维混乱。
2.Spring 已经很完备,包括IDE在内都已经形成一整套体系,真的没有必要在进行二次封装。目前个人觉得有价值的也就是 @江南白衣 的 JavaEE参考示例 SpringSide
光石头
光石头

引用来自“Roger蛋蛋”的评论

已解决,class下没有编译,新建工程就好了

0.2版本发布了,重大更新!!
光石头
光石头

引用来自“唐海康”的评论

博主这是反讽的意思吗……这么多的代码你不觉得太长太多了吗……

请教你的系统总共几行代码啊?
唐海康
唐海康
博主这是反讽的意思吗……这么多的代码你不觉得太长太多了吗……
光石头
光石头

引用来自“Roger蛋蛋”的评论

已解决,class下没有编译,新建工程就好了

我目前的版本结合代码脚手架,已经可以直接生成常用功能了,过几天再发上去吧
南湖船老大
南湖船老大
已解决,class下没有编译,新建工程就好了
南湖船老大
南湖船老大
原样导入后报错了
SEVERE: Exception sending context destroyed event to listener instance of class org.springframework.web.context.ContextLoaderListener
java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' before accessing beans via the ApplicationContext
  at org.springframework.context.support.AbstractRefreshableApplicationContext.getBeanFactory(AbstractRefreshableApplicationContext.java:172)
  at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1078)
  at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1052)
  at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1000)
  at org.springframework.web.context.ContextLoader.closeWebApplicationContext(ContextLoader.java:548)
  at org.springframework.web.context.ContextLoaderListener.contextDestroyed(ContextLoaderListener.java:142)
  at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:4831)
  at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5478)
  at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232)
  at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:160)
  at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
  at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
  at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
  at java.util.concurrent.FutureTask.run(Unknown Source)
  at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
  at java.lang.Thread.run(Unknown Source)
xmqywx
xmqywx

引用来自“屁屁果”的评论

引用来自“xmqywx”的评论

博客登不上了,502报错捏

嗯,感谢 gfw.

加个jfinal的标签吧,很有学习意义
光石头
光石头

引用来自“xmqywx”的评论

博客登不上了,502报错捏

嗯,感谢 gfw.
xmqywx
xmqywx
博客登不上了,502报错捏
会不断更新spring方面的博文,还请大家多多关注!

之前使用spring,发掘用起来越来越臃肿。现在有个想法,把spring里面的核心功能抽出来,自己开发一个mini版的,省去平时用的少的部分,然后提供上来给大家看看。现在的想法是轮子尽量造,争取...

loda0128
2015/06/08
0
4
怎么使用Spring配置事务 ?

Spring同时支持编程式事务策略和声明式事务策略,大部分时候都采用声明式事务策略。 声明式事务管理的配置方式,通常有以下4种: (1) 使用TransactionProxyFactoryBean为目标Bean生成事务代理...

a'ゞ浪人گق
08/09
0
0
(一)SpringBoot——helloworld

一、为什么会诞生SpringBoot? 先看看spring的优势: 1、代码解耦、简化开发:代码中不再需要new去构造对象,而是交由spring去管理对象。 2、支持AOP:面向切面的编程,方便进行权限拦截、日...

solidwang
04/17
0
0
Spring Boot 和 Grails 的不同点

最近花了些时间了解了一下 Spring Boot 这个新框架。这个框架提供了快速开发基于 Spring Framework 的应用的功能。同样,SpringSource 旗下还有另一个用于 Web 应用快速开发的框架,就是 Gr...

编走编想
2014/05/02
0
0
SpringMVC 拦截器不拦截静态资源的三种处理方式

SpringMVC 拦截器不拦截静态资源的三种处理方式 SpringMVC提供mvc:resources来设置静态资源,但是增加该设置如果采用通配符的方式增加拦截器的话仍然会被拦截器拦截,可采用如下方案进行解决...

独钓渔
2017/11/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

java并发备忘

不安全的“先检查后执行”,代码形式如下: if(条件满足){ //这里容易出现线程安全问题//doSomething}else{//doOther} 读取-修改-写入 原子操作:使用CAS技术,即首先从V中读取...

Funcy1122
今天
0
0
SpringBoot2.0 停机

最近新建了个SpringBoot2.0的项目,因为原来一直使用的是传统的Tomcat部署war包的形式,所以这次SpringBoot内置Tomcat部署jar包的时候遇到了很多问题。其中一个就是因为没有外置的Tomcat容器...

Canaan_
昨天
0
1
Confluence 6 外部参考

一个外部参考的意思是任何站点链接到你 Confluence 的实例。任何时候当 Confluence 的用户单击这个外部链接的时候,Confluence 可以记录这次单击为参考。 在默认的情况下,外部链接的参考链接...

honeymose
昨天
0
0
Android中的设计模式之抽象工厂模式

参考 《设计模式解析》 第十一章 Abstract Factory模式 《设计模式:可复用面向对象软件的基础 》3.1 Abstract Factory 抽象工厂 对象创建型模式 《Android源码设计模式解析与实战》第6章 创...

newtrek
昨天
0
0
Redis | 地理空间(GEO)的一个坑

Redis的地理空间(Geo)是个好东西,轻轻松松的就可以把地图描点的问题处理了, 最近却遇到一个坑...Redis采用的Msater-Slave模式, 运用GEORADIUS在salve读取对应的数据,新增了从节点但是从不返...

云迹
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部