论坛首页 Java企业应用论坛

Spring--也许正成为一个EJB

浏览 72198 次
该帖已经被评为良好帖
作者 正文
   发表时间:2011-04-15  
wl95421 写道
引用
也没看出来你有啥有建设性的建议,最搞笑的是你主贴没啥观点,返回来还大量应用回帖的内容充实你的主贴


我有没有提出来建议吗? 我说Tuscany用JDK的ServiceLoader来支持自身的架构,有兴趣的朋友可以去看一下,那种方式不见得比Spring的配置差。
有兴趣的朋友去看一下NetBeans的Lookup,也能学到很多东西。
我已经提出来了,但有几位去看了呢?只是在质疑我?
很多人根本就没有去看过我说的这些东西,没有了解更多的内容,就是在质疑。

另外“面向接口”这个说法被误解了,我也在主贴中给出了说明,虽然不什么建设性的建议,也至少表明了自己的观点吧。然后说Spring被滥用,有误导倾向。

难道我一定要给出一个方案,才算是有建设性的建议吗?

我也没有用别人的内容来充实自己的主贴,只是对别人的提问加以回答,这也算是盗用吗?


引用
楼主不是一个实在人!

至于我是否实在,我不评价。
我只是希望大家更多地独立思考。
能够对Spring质疑,然后思考自己的用法,然后正确地使用Spring,也同样是好事情。
总比没有人质疑要好一些吧。

就算去看看我上面提到的一些东西,也不算是坏事吧。

+1

思考
0 请登录后投票
   发表时间:2011-04-15  
插一嘴,spring被用滥的很大一部分原因是很多项目把spring容器只作为一个层面考虑,就好像是一个冰箱,不管好的坏的新鲜的都往里面塞,结果新鲜的和过期的配置堆在了一起,改起来又怕牵一发动全身,结果配置文件越来越大,越来越多,越来越乱。假如把bean引用的拓扑图拿出来,像蜘蛛网一样。spring作为一个冰箱应该层次分明,同等新鲜程度的东西应该放一起,一次IOC注入超过5个以上的相同类型的bean考虑简化,配合Ant,把配置管理部分采用自动化的方式,减少配置时间,把蜘蛛网整理成树形结构才是较好的解决办法。annotation的使用必须制定一些限制原则,以免一些“神秘”“灵异”的事件发生。
0 请登录后投票
   发表时间:2011-04-15  
我很期待出现一个without spring,就像当年出现了without ejb一样。
不过一路看来,还没有一个可以without spring的真正理由。
另外有些讨论的人连spring是怎么出现并席卷全球的都不知道。
如果连spring解决了什么问题都没搞清楚,很难想象能提出什么值得一看的观点来。
0 请登录后投票
   发表时间:2011-04-15  
支持LZ,有自己的想法,大胆猜想,而且证实过,中国冷嘲热讽的人多,崇拜权威的人多,有自己思想的少

老师:请谈一下对于其他国家粮食短缺的自己的看法?

美国学生:什么是其他国家?

非洲学生:什么是粮食?

欧洲学生:什么是短缺?

中国学生:什么是自己的看法?
0 请登录后投票
   发表时间:2011-04-15  
spring从2.x时候就该停下来了。 往后就是在画蛇添足。
0 请登录后投票
   发表时间:2011-04-15   最后修改:2011-04-15
赞同楼主意见!

我就是为了接口而接口那种。。。。
接口中方法都是具体的。。。如果条件变了,要从service改到dao接口和实现类都要改。。。。。
那个烦啊

想请教问楼主和各位前辈如何避免这种滥用情况?
不知道这个问题表达的对不对 呵呵。。。

还请各位请教


0 请登录后投票
   发表时间:2011-04-15  
引用

我有没有提出来建议吗? 我说Tuscany用JDK的ServiceLoader来支持自身的架构,有兴趣的朋友可以去看一下,那种方式不见得比Spring的配置差。
有兴趣的朋友去看一下NetBeans的Lookup,也能学到很多东西。
我已经提出来了,但有几位去看了呢?只是在质疑我?
很多人根本就没有去看过我说的这些东西,没有了解更多的内容,就是在质疑。

另外“面向接口”这个说法被误解了,我也在主贴中给出了说明,虽然不什么建设性的建议,也至少表明了自己的观点吧。然后说Spring被滥用,有误导倾向。

难道我一定要给出一个方案,才算是有建设性的建议吗?




你说的这个ServiceLoader 你这么一说我还真去Google了一下
一下摘自IBM的一片文章
引用

2. ServiceLoader

Java 开发人员经常希望将使用和创建组件的内容区分开来。这通常是通过创建一个描述组件动作的接口,并使用某种中介创建组件实例来完成的。很多开发人员使用 Spring 框架来完成,但还有其他的方法,它比 Spring 容器更轻量级。

java.util 的 ServiceLoader 类能读取隐藏在 JAR 文件中的配置文件,并找到接口的实现,然后使这些实现成为可选择的列表。例如,如果您需要一个私仆(personal-servant)组件来完成任务,您可以使用清单 2 中的代码来实现:


清单 2. IPersonalServant

public interface IPersonalServant
{
    // Process a file of commands to the servant
    public void process(java.io.File f)
        throws java.io.IOException;
    public boolean can(String command);
}


can() 方法可让您确定所提供的私仆实现是否满足需求。清单 3 中的 ServiceLoader 的 IPersonalServant 列表基本上满足需求:


清单 3. IPersonalServant 行吗?

import java.io.*;
import java.util.*;

public class Servant
{
    public static void main(String[] args)
        throws IOException
    {
        ServiceLoader<IPersonalServant> servantLoader =
            ServiceLoader.load(IPersonalServant.class);

        IPersonalServant i = null;
        for (IPersonalServant ii : servantLoader)
            if (ii.can("fetch tea"))
                i = ii;

        if (i == null)
            throw new IllegalArgumentException("No suitable servant found");
       
        for (String arg : args)
        {
            i.process(new File(arg));
        }
    }
}


假设有此接口的实现,如清单 4:


清单 4. Jeeves 实现了 IPersonalServant

import java.io.*;

public class Jeeves
    implements IPersonalServant
{
    public void process(File f)
    {
        System.out.println("Very good, sir.");
    }
    public boolean can(String cmd)
    {
        if (cmd.equals("fetch tea"))
            return true;
        else
            return false;
    }
}


剩下的就是配置包含实现的 JAR 文件,让 ServiceLoader 能识别 — 这可能会非常棘手。JDK 想要 JAR 文件有一个 META-INF/services 目录,它包含一个文本文件,其文件名与接口类名完全匹配 — 本例中是 META-INF/services/IPersonalServant。接口类名的内容是实现的名称,每行一个,如清单 5:


清单 5. META-INF/services/IPersonalServant

Jeeves   # comments are OK




然后在JDK的doc里看到这个字样

引用

Since:
1.6


我被你的"单纯"震精了,话说,spring那一年出现的,那时jdk1.6 ,哦,连jdk1.5也都还没有怀胎

这个ServiceLoader 只实现了spring其中小小一部分的内容,你就拿来说这是建设性的意见

你确定你不是开玩笑,你叫程序员每次都去改那个叫META-INF/services 的东西,是木是,

里确定你了解spring目前的地位,和作用,

共产主义是 marks 提出来的,可是 marks 流离失所,还要列宁包装成社会主义才能鼓动人

所以我说你适合鼓动人一点都没错

我承认,回这个帖子,我也是处于无聊.....................

0 请登录后投票
   发表时间:2011-04-15   最后修改:2011-04-15
楼上的,我也无语了。
首先这个东西,早在Spring之前就出现了,只不过Sun一直没有公开,所以才少为人知。
另外,如果你觉得这个东西小,那么Tuscany可以基于它来完成整个的架构。同样NetBeans的Lookup也少得可怜,功能很强。

至于要不要修改META-INF/services,我更觉得无语了,为什么要修改啊。
给个实际的例子吧。比如说我现在有一个模型,要输出为指定的格式。
写一个IExporter接口,然后除了export方法以外,再加一个isAcceptable方法和一个getPriority方法,就可以通过这种方法很灵活地加载自己需要的实现类。

这种需求下,是Spring灵活还是ServiceLoader呢?

我不是说ServiceLoader比Spring好,我始终只是在说,Spring现在被严重误用。
大家多思考一下,看一些外面的东西,有什么不好。
0 请登录后投票
   发表时间:2011-04-15  
一帮无聊的人,吵什么吵。就像原来有人喜欢青山菜菜,后来我喜欢苍井空,你非要说苍井空不好,你说你喜欢87年的麻美由真或者88,89年的XXX。好吧。你们就吵吧。
0 请登录后投票
   发表时间:2011-04-15   最后修改:2011-04-15

与其说Spring正在成长为一个EJB,不如承认Spring正在成熟,Spring的生态环境已经是一个小地球了

选择Spring

  • 项目技术体系:HTML+JSP+REST+MVC+JDBC
  • 看好spring mvc的速度+spring生态环境的欣欣向荣
  • Spring生态:从安全到各种服务集成具有天生的优势
  • Spring对REST的支持
  • MVC测试:
    1. tomcat maxThread=10;使用ab -n 10000 -c 20 测试一个helloworld control!
    2. spring3 mvc访问jsp速度高达5、6K/s
    3. spring3 mvc采用freemarker速度高达5、6K/s
    4. struts2(关闭log,关闭开发模式) mvc最高还达不到2K/s
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics