`
cicl
  • 浏览: 46884 次
  • 性别: Icon_minigender_1
  • 来自: 未来
社区版块
存档分类
最新评论

用于C/S的IoC之java的小框架——jegg

    博客分类:
  • java
阅读更多

 

最近在做一个 java 应用(非 B/S 结构),刚刚开始设计,忽然间满脑子都是在类中 new 对象的场景,想来不觉打了一个冷颤,在类中不挺的 new 简直太恐怖了, web 项目做多了,不由想到如果能把这些交给类似于 Spring 一样的 IoC 框架来做就好了。

但目前为止本人用 Spring时只限于在 web 开发中,也不想花时间去深入研究它到底能不能用于非web 的框架,况且偌大一个 Spring 框架,内容“包罗万象”,包括: IoC AOP MVC 体系等等,即使用在类似 C/S 结构的简单应用中或多或少有些杀鸡用牛刀之嫌,况且我要做的还是一个小的应用程序。

      那干脆就自己写一个用于类似 C/S 结构应用中的 IoC 小框架吧,这样可能成本更低些,于是才有了 jegg

      希望对有类似需求的人有用,呵呵。(本来就是为自己的需求写的,so重新发明轮子的帽子还是不要砸过来为好,呵呵)

      ps:只是自己粗略测试过,如果有建议、问题或者疑问请反馈,MAIL:cicl0601@gmail.com,谢谢。

 

 

      声明:看到大家总是揪着Spring能不能做作C/S这点,到现在答案是肯定的,即Spring是可以的,但就这点的讨论觉得意义已经不大了,也违背了写这个帖子的初衷。个人觉得在这个东西的设计上讨论的价值才是最大的,相信也是大部分人所想获取到的,再次请大家回归讨论正题,谢谢。

分享到:
评论
55 楼 jbon 2010-12-07  
Spring可以用来开发desktop,不过好不好用是个值得考虑的
54 楼 cuiran 2010-12-06  
在OSGi开发也可以用spring(spring dm) ,蛮重要的。
53 楼 nakupanda 2010-12-06  
这个贴子完全有充分的理由扯到其他问题上啊

比如:

现在的孩子学JAVA咋就这样呢...
52 楼 thetcc 2010-12-06  
回答的人够多了,就不在说什么了。
51 楼 cicl 2010-12-06  
yashironan 写道
奇怪,这样的帖子被投隐藏,LZ这种类似的需求,我以前就碰到过。
Spring是可以做desktop的,不用怀疑,applicationcontext.xml手动加载就行了,BeanFactory就当个factory来用即可。

这个IOC框架个人觉得和log4j,dom4j依赖不好,既然目标是精简版IOC内核,那就不要依赖于任何3rd的lib,用最小体积、最简洁的代码实现ioc以及AOP等用到的功能即可。如果要考虑通用性,扩展性,为何不用成熟、久经考验的Spring呢。

我之前做过的项目,原始版本是以spring为ioc容器做的client,后来为移植到支持java的硬件设备上去,也做了个跟楼主类似的ioc容器以取代spring,主要目的是减少client的大小。spring-core,spring-dao加起来有近2MB了,换成自己的IOC,dao,这2MB的空间可以存储非常多的数据了。

   呵呵,多谢提出的中肯意见,恩,在log4j、dom4j问题上确实存在依赖关系,关于dom4j当时只是想使用个现有的xml解析工具来做,就选择了常用的dom4j而没有使用jdk自动的解析工具;log4j在我们目前使用的多数框架都是存在依赖的,当然也可以使用jdk自己的log。
   如果只是单纯的使用Spring,其扩展性、通用性可能没有我们自己规划、设计并实现感触来的深刻,呵呵。
   恩,支持朋友的看法,Spring包挺大的,放在自己的小应用上就有点大材小用了,呵呵。
50 楼 yashironan 2010-12-06  
奇怪,这样的帖子被投隐藏,LZ这种类似的需求,我以前就碰到过。
Spring是可以做desktop的,不用怀疑,applicationcontext.xml手动加载就行了,BeanFactory就当个factory来用即可。

这个IOC框架个人觉得和log4j,dom4j依赖不好,既然目标是精简版IOC内核,那就不要依赖于任何3rd的lib,用最小体积、最简洁的代码实现ioc以及AOP等用到的功能即可。如果要考虑通用性,扩展性,为何不用成熟、久经考验的Spring呢。

我之前做过的项目,原始版本是以spring为ioc容器做的client,后来为移植到支持java的硬件设备上去,也做了个跟楼主类似的ioc容器以取代spring,主要目的是减少client的大小。spring-core,spring-dao加起来有近2MB了,换成自己的IOC,dao,这2MB的空间可以存储非常多的数据了。
49 楼 holly2k 2010-12-05  
楼主学spring的时候是不是就直接SSH来的,竟然会说spring只在web使用
48 楼 alosin 2010-12-05  
大家心平气和看LZ开源的东西,丁丁大点的项目就去用Spring?不管IOC的包有几M,确实没必要。是不是嫌现在带宽多,硬盘便宜嘛,LZ项目挺好的!
47 楼 gh_aiyz 2010-12-04  
george 写道
Zahir 写道
谁说的spring不能用于非web环境的。。
建议看看guice

google guice 跟spring没有关系吧,guice能应用于桌面软件,不能说明spring也行得通,经过楼上几位大牛的例子,证明spring理论上是可以应用于桌面软件的,但是恕我孤陋寡闻,我没有见过一个Spring用于桌面软件的案例。

之所以在这里讨论这些水贴,是因为我发现周围很多人对Spring盲目崇拜,比如明明是一个简单的发表留言的页面,也要把一大堆的Spring包引入进来,还要为了迎合Spring的IOC,把Service/Dao全都注入,而且连Struts2的Action也交给Spring来管理。
可是我只想要一个留言页面,就操作一个表,也无所谓事务,有必要这样折腾么,难道手动new 一个Service,手动new 一个Dao不可以么?


行不行得通,自己试一下不久行了;不知道怎么试,google一下不就知道了。千位不要因为你不会,就断定不可能。Spring就是一个工具,有人这样用,有人那样用,没有崇拜这一说。但是spring确实是一个了不起的项目。
46 楼 cicl 2010-12-04  
mxdba321123 写道
可能楼主没有深入了解Spring或者使用时间还不是很多

Spring的整个体系结构包括:
1.Spring核心,也即IOC以及一些相关工具
2.Srping Aop
3.ORM的支持
4.Spring Dao
5.Spring Web
6.ApplicationContext
7.MVC

《Expert One on One J2EE Development Without EJB》什么事物的产生总有他的原因,楼主可以了解一下 就清楚了 呵呵

多谢推荐,
45 楼 mxdba321123 2010-12-04  
可能楼主没有深入了解Spring或者使用时间还不是很多

Spring的整个体系结构包括:
1.Spring核心,也即IOC以及一些相关工具
2.Srping Aop
3.ORM的支持
4.Spring Dao
5.Spring Web
6.ApplicationContext
7.MVC

《Expert One on One J2EE Development Without EJB》什么事物的产生总有他的原因,楼主可以了解一下 就清楚了 呵呵
44 楼 風一樣的男子 2010-12-04  
CoderPlusPlus 写道
george 写道
Sping可以用在desktop程序中?
谁有例子,不要妄语哦。起码我在Spring官方网站没有看到一个Desktop的例子。

public static void main(String[] args) {
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
        Hello hello =(Hello) applicationContext.getBean("hello");
        hello.sayHello();        
}


如果是说是只知道spring在J2SE里的用法的人质疑下web程序里怎么加载ApplicationContext倒还情有可原,这样的问题就未免本末倒置了


难道你们用了 Spring 的 Web 项目单元测试还要启动容器?
如果不启动容器,那 Spring 为什么不能用于非 Web 环境
43 楼 gh_aiyz 2010-12-04  
头一次听说spring不能用在非web环境中。。。。你只用IoC那一部分不就完了,真汗!
42 楼 buru 2010-12-04  
关注一下,楼主可否把demo工程也打包上传一下
41 楼 zyslovely 2010-12-03  
spring可以用在cs结构的
40 楼 cicl 2010-12-03  
cailongyi 写道
好像缺少了这两个类:
import com.jegg.domain.DoManager;
import com.jegg.domain.Group; 

已经处理,谢谢关注
39 楼 george 2010-12-03  
Zahir 写道
谁说的spring不能用于非web环境的。。
建议看看guice

google guice 跟spring没有关系吧,guice能应用于桌面软件,不能说明spring也行得通,经过楼上几位大牛的例子,证明spring理论上是可以应用于桌面软件的,但是恕我孤陋寡闻,我没有见过一个Spring用于桌面软件的案例。

之所以在这里讨论这些水贴,是因为我发现周围很多人对Spring盲目崇拜,比如明明是一个简单的发表留言的页面,也要把一大堆的Spring包引入进来,还要为了迎合Spring的IOC,把Service/Dao全都注入,而且连Struts2的Action也交给Spring来管理。
可是我只想要一个留言页面,就操作一个表,也无所谓事务,有必要这样折腾么,难道手动new 一个Service,手动new 一个Dao不可以么?

38 楼 zzy9zzy 2010-12-03  
yangguo 写道
仅仅是因为减少new而用spring,简直舍近求远,隔罩摸乳。


的确,光用IoC减少new确实大材小用了。不过还要看项目前景和大小,自己写一个工厂类去做也没问题,就怕项目越做越大,做大后Spring就发挥出作用了,我是刚刚吃过的这个直接摸乳的亏。

另外你的优雅代码系列还能不能继续啊,还想接着看算法呢,还是挺有技术含量的,呵呵
37 楼 cicl 2010-12-03  
aoliwen521 写道
cicl 写道
aoliwen521 写道
spring。。。非web程序。。。
就因为这个自己写轮子。唉。。。
spring就是直接用的,只是在web上应用还得加个监听器。

是可以直接使用的,只是用在我的需求上大材小用了,呵呵,谢谢回复


我现在特喜欢spring的ioc,不管做什么都用spring。
即使连ioc都用不到,最起码配置文件的解析不用自己做了。

呵呵,初衷一样,也是不想自己new,想用配置文件解决,而且这样也便于管理与维护
36 楼 aoliwen521 2010-12-03  
cicl 写道
aoliwen521 写道
spring。。。非web程序。。。
就因为这个自己写轮子。唉。。。
spring就是直接用的,只是在web上应用还得加个监听器。

是可以直接使用的,只是用在我的需求上大材小用了,呵呵,谢谢回复


我现在特喜欢spring的ioc,不管做什么都用spring。
即使连ioc都用不到,最起码配置文件的解析不用自己做了。

相关推荐

    自己动手做框架——ORM,MVC,IOC框架

    Spring框架是Java中最著名的IOC/DI实现,它允许开发者通过配置文件或注解来声明对象及其依赖。 在实际操作中,你可以通过以下步骤动手制作这些框架: 1. 设计ORM框架:定义接口或抽象类,用于表示数据库操作,然后...

    《撸代码 学习 IOC注入技术1 》—— 布局注入 与 控件注入

    《撸代码 学习 IOC注入技术1 》—— 布局注入 与 控件注入 1.概念再理解2.布局注入3.控件注入 好的,下面就是见证奇迹的时刻啦: 成功啦!我成功啦,啊哈哈哈哈~ 完成了布局注入,那我们下面继续控件注入吧~ ...

    Android进阶——框架打造之IOC框架

    Android进阶——框架打造之IOC框架 实现通过Id找到控件的功能 实现通过Id找到Color、String资源 实现绑定view的点击事件、长按事件 实现绑定SetContentView 实现绑定网络的检测功能

    Ioc模式和微容器——j道

    ### Ioc模式与微容器详解 #### Ioc模式概述 Ioc(Inversion of Control,控制反转)是一种软件设计模式,其核心理念在于通过将组件之间的依赖关系进行解耦,从而实现更为灵活、可扩展的系统架构。在传统的程序设计...

    Java EE 框架整合开发⼊⻔到实战——Spring+Spring MVC+MyBatis(微课版)课后习题答案.pdf

    这份文档名为《Java EE 框架整合开发入门到实战——Spring+Spring MVC+MyBatis(微课版)课后习题答案.pdf》,它显然是关于Java EE中流行的三个框架整合使用的教程。这三个框架分别是Spring、Spring MVC和MyBatis,...

    小读spring ioc源码(一)——整体介绍

    《Spring IOC源码解析(一)——整体介绍》 在深入理解Spring框架的过程中,源码分析是不可或缺的一环。本文将对Spring的IOC(Inversion of Control,控制反转)容器的源码进行初步探讨,旨在帮助读者从整体上把握...

    基于Java全栈开发的Nutz框架:Mvc/Ioc/Aop/Dao/Json一体化设计源码

    该项目为全栈Java开发,采用Nutz框架实现Mvc/Ioc/Aop/Dao/Json一体化设计,源码包含2307个文件,涵盖1742个Java源文件、208个man文档、143个png图片、47个jpg图片、22个js脚本、21个psd设计文件、16个xml文件、13个...

    Java框架API大全.rar

    本压缩包“Java框架API大全.rar”包含了三大主流Java Web框架——Spring、Hibernate、Struts的完整API文档,为开发者提供了详尽的参考资料。 首先,Spring框架是Java企业级应用的核心框架,以其依赖注入(DI)和...

    架构探险——从零开始写Java Web框架 绝对完整!强烈推荐

    《架构探险——从零开始写Java Web框架》首先从一个简单的 Web 应用开始,让读者学会如何使用IDEA、Maven、Git等开发工具搭建 Java Web 应用;接着通过一个简单的应用场景,为该 Web 应用添加若干业务功能,从需求...

    自己的IoC框架实现

    Spring框架是Java领域最著名的DI框架,其核心特性之一就是Inversion of Control(IoC,控制反转)。在本项目中,我们将根据Spring的IoC原理,尝试实现自己的IoC框架。 首先,理解IoC的概念至关重要。IoC是指应用...

    自己动手做框架(27)——配置IOC框架.rar

    【标题】"自己动手做框架(27)——配置IOC框架"揭示了这一主题的核心,即探讨如何构建自己的依赖注入(DI)框架,特别是通过配置XML文件来实现控制反转(IOC)。IOC是一种设计模式,它将对象的创建和管理的责任反转,...

    springIOC手写框架分析

    springIOC手写框架分析springIOC手写框架分析springIOC手写框架分析springIOC手写框架分析springIOC手写框架分析springIOC手写框架分析springIOC手写框架分析springIOC手写框架分析springIOC手写框架分析springIOC...

    SSM框架——详细整合教程.pdf

    Spring是一个轻量级的Java开发框架,核心特性是控制反转(IoC)和面向切面编程(AOP)。它通过依赖注入(DI)来管理对象的生命周期和依赖关系,降低了组件间的耦合度。Spring还提供了AOP模块,用于实现如日志、事务...

    java练习之模拟SPRING IOC,我的SUMMER

    在本Java练习中,我们将深入理解并实现Spring框架的核心组件——IoC(Inversion of Control,控制反转)容器。这个练习分为三个主要部分,旨在帮助我们掌握XML配置文件的读取,模拟Spring的IoC机制,以及对Struts...

    Java毕业设计——基于ssm框架的大学社团管理系统(源码+sql)

    6. **SQL脚本**:在“Java毕业设计——基于SSM框架的大学社团管理系统(源码+sql)”中,提供的SQL脚本可能包含了创建数据库表、插入初始数据、以及可能的视图或存储过程。这些脚本对于系统的初始化和数据迁移至关重要...

    SSM框架——详细整合教程(Spring SpringMVC MyBatis

    ### SSM框架——详细整合教程 #### 一、基本概念 **1.1 Spring** Spring 是一个开源框架,最初由 Rod Johnson 在他的著作《Expert One-On-One J2EE Development and Design》中提出部分理念和原型,随后发展成为...

    30种java技术框架图

    标题“30种java技术框架图”与描述“这个介绍的比较全面,内容比较详细 对初学者有很大帮助 欢迎下载”揭示了文档的性质——它似乎是一份图解资料,为初学者介绍了30种Java技术框架。这些框架包括了Java类加载器架构...

    SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)

    SSM框架,即Spring、SpringMVC和MyBatis的集成,是Java开发Web应用时常用的三大组件。这个详细整合教程旨在帮助开发者深入理解和实践这三个框架的协同工作,以提高项目开发效率和代码质量。 首先,Spring框架是核心...

Global site tag (gtag.js) - Google Analytics