没有Spring,Ruby,Python,PHP如何管理?


13

我为副项目编写了工作中的企业Java应用程序和Web服务(Spring,Hibernate,Maven,RESTEasy)以及PHP(CakePHP)和Python(Django)。

虽然我确实看到了Spring带来的控制反转,面向方面编程等的价值,但是我不确定如果没有像Spring这样的框架,不在Java堆栈上的大量Web应用程序将如何管理。

那么,开发人员是否只需要“克服” Spring消除的紧密耦合的组件和其他抱怨,还是我错过了什么?

对于那些不熟悉Spring的人,我们最常使用的功能是:

  • 控制容器的反转:应用程序组件的配置和Java对象的生命周期管理,

  • 面向方面的编程:可以实现跨领域的例程,

  • 事务管理:统一多个事务管理API并协调Java对象的事务。


3
如果您至少简要地解释一下Spring的功能,您可能会得到更好的答案。
Per Johansson

4
仅仅因为Pythonista使用者不使用Java的流行语,并不意味着设计模式有很大不同。好吧,也许除了损失更少的膨胀。
vartec

6
即使有了您的定义,我仍然完全不知道Spring会做什么。
sevenseacat 2011年

这是我对Spring的最大不满之一。在开始进行Java企业开发之前,我不需要它。
rdasxy 2011年

我是Java开发人员,但是我真的非常讨厌spring的复杂性。
Mahmoud Hossam

Answers:


15

其他平台不需要Spring,因为这些语言没有Java那样严格。

我将以node.js为例

  • 控制容器的反转:应用程序组件的配置和Java对象的生命周期管理

服务器配置可以通过代码或简单的json配置文件完成。对于一般的IoC系统,我们根本不需要它们,Javascript是一种富有表现力的动态语言。是的,您需要IoC,但这很简单,将依赖项作为函数参数传递给对象。

  • 面向方面的编程:可以实现跨领域的例程

我根本不认为我们需要这样的东西,我们编写模块化代码就可以了。

  • 事务管理:统一多个事务管理API并协调Java对象的事务

noSQL非常受欢迎。没有交易的概念。

就我个人而言,我会说这样的系统过大且设计过度,您只是不需要它们。其他语言和平台只是保持精简和敏捷。


8
您还错过了使用鸭子输入和猴子补丁在Python和Ruby中注入内容的简单性。
Danny Staple

3
是的,其他语言没有Spring的原因是……他们不需要Spring才能真正有用;-)
Dean Harding

7
说您不需要IoC,AOP或事务管理是短视和错误的。许多高级语言使您可以使用AOP和/或IoC设计原理轻松编写代码。只是大多数高级语言不需要显式的类或容器即可提供这些功能。
Dietbuddha 2011年

2
@Raynos 对于通用IoC系统,我们根本不需要它们,javascript是一种富有表现力的动态语言。这在某种程度上是错误信息。您认为您不需要它们。coffeescripter.com/2010/08/…–
亚伦·

4
@AaronMcIver您说对了,我们需要IoC。
雷诺斯2011年

15

在大多数高级语言中,使用AOP和/或IoC设计原则进行编写很简单。

实现AOP所需要做的只是使语言支持更高阶的功能。例如:

def log(fn):
  def wrapped_fn(*a, **kw):
    logger.log(fn_formatter(fn, a, kw))
    return fn(*a, **kw)
  return wrapped_fn

@log
def do_something(my_friend):
  return have_fun_with(my_friend)

在编程时,您也可以遵循一般的IoC或依赖注入原则。您不需要特定的容器即可提供该功能。您可以以这种方式编写代码。

def etl(iextract, transformations, iload):
  return iload(itertools.imap(compose(*transformations), iextract()))

9

Python既喜欢Spring又喜欢Spring Python

Spring框架是为了简化Java开发而创建的,对于Ruby或Python开发而言,Java开发的真相并不必要。

例如,Ruby具有元编程功能,这意味着您可以创建自己的AOP。

但是,具有讽刺意味的是,新的Java Web框架正试图赶上Django和Rails框架(例如,请参阅Grails和Play!框架)。


4
Grails不是Java框架。这是一个Groovy框架。Groovy编译为Java字节码,但不是Java。
凯文·克莱恩

@kevincline是的,我知道,但归根结底,它是一个JVM Web框架(基于Spring和Hibernate构建)。
Chiron

1
是的,Grails的优点是您不必了解Spring。
凯文·克莱恩

1
@kevincline不一定正确。有时您必须回到春季并在这里和那里进行调整
Chiron

3

对于Python,BlueBream(又名Zope 3)提供了Spring的功能以及更多功能。

复杂性和强大功能是有代价的,有时候您不想付钱。

许多程序员发现BlueBream令人生畏,对于他们需要做的事情来说太多了,他们更喜欢精简,较小的工具包。其他大多数解决方案(Django等)都基于MVC范例。

您还可以在Java空间中看到类似的作用力,例如美丽的Playframework

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.