[Java] Spring框架到底是什么?


Answers

Spring 包含正如Skaffman正确指出的 )一个MVC框架。 简而言之,这里是我的投入。 Spring支持服务层,Web层和业务层的分离,但实际上最擅长的是注入对象。 所以用一个例子来解释下面的例子:

public interface FourWheel
{
   public void drive();
}

public class Sedan implements FourWheel
{
   public void drive()
   {
      //drive gracefully
   }
}

public class SUV implements FourWheel
{
   public void drive()
   {
      //Rule the rough terrain
   }
}

现在在你的代码中,你有一个名为RoadTrip的类,如下所示

public class RoadTrip
{
    private FourWheel myCarForTrip;
}

现在,每当你想要一个Trip的实例; 有时你可能想要一辆SUV来初始化FourWheel,或者有时你可能想要四门轿车。 这真的取决于你想要根据具体情况。

为了解决这个问题,你希望有一个工厂模式作为创建模式。 工厂返回正确的实例。 所以最终你会得到大量的胶水代码来正确地实例化对象。 春天没有胶水代码最好的胶水代码的工作。 您声明XML中的映射,并自动初始化对象。 它也使用单例体系结构的实例很多,这有助于优化内存使用情况。

这也被称为控制反转。 其他的框架是Google guice,Pico容器等

除此之外,Spring还有验证框架,与JDBC,iBatis和Hibernate(还有更多)协作,对DAO层提供了广泛的支持。 对数据库事务提供卓越的事务控制。

春天还有很多东西可以在“Pro Spring”这样的好书中读到。

以下网址也可能有帮助。
http://static.springframework.org/docs/Spring-MVC-step-by-step/
http://en.wikipedia.org/wiki/Spring_Framework
http://www.theserverside.com/tt/articles/article.tss?l=SpringFramework

Question

我听到很多关于Spring的信息 ,人们都在网上说Spring是一个很好的Web开发框架。 Spring框架到底是什么? 我如何将它用于我的Web-Java应用程序开发? 任何例子?




过去, Spring只是一个像( GuicePicoContainer ,...)这样的依赖注入框架工作,但现在一天它是一个为您构建企业应用程序的总体解决方案。

春天依赖注入,当然是春天的心脏仍然存在(你可以在这里回顾其他好的答案),但是从春天还有更多...

Spring现在有很多项目,每个项目都有一些子项目( http://spring.io/projects )。 当有人谈到春天的时候,你一定要搞清楚他在说什么春天的项目 ,是春天的核心, 春天的春天 ,还是春天的项目。

一些值得一提的春季项目是:

如果您的应用程序需要更多的指定功能,您可能也会发现它:

  • 弹簧批量框架设计,使开发
    批量应用
  • spring HATEOAS基于HATEOAS主体轻松创建REST API
  • 用于移动应用开发的spring mobilespring andriod
  • 弹簧壳构建一个全功能的shell(aka命令行)应用程序
  • 春天云春天云彩数据流为云彩应用

那里也有一些小项目,例如spring-social-facebookhttp://projects.spring.io/spring-social-facebook/

您可以使用spring来进行Web开发,因为它具有Spring MVC模块,这是Spring MVC 框架项目的一部分。 或者你可以使用其他web框架的工作,如struts2




春天是三件事。

  1. Spring处理依赖注入,我建议你阅读Martin Fowler关于依赖注入的优秀介绍。
  2. Spring做的第二件事就是用优雅的方式将优秀的Java库封装在应用程序中。 看一个很好的例子,看看Spring如何包装Task Executors和Quartz Scheduler。
  3. 第三,Spring提供了大量的REST,MVC Web框架等网络实现。 他们认为,因为你使用Spring的前两个,也许你可以使用它的一切你的web应用程序需要。

问题在于,Spring DI是真的很好的想法,其他东西的包装真的很好的思考,其他的东西都想出来,Spring很好地包装它。 MVC和REST的Spring实现和其他所有的东西都没有完成(YMMV,IMHO),但是也有例外(Spring Security是da bomb)。 所以我倾向于使用DI的春天,它的酷包装,但喜欢其他东西的Web(我喜欢Tapestry很多),REST(泽西岛是非常强大的),等等。




我看到这两个部分:

  1. “春天到底是什么” - >见维克托·胡戈接受的答案。
  2. “Spring是一个很好的Web开发框架” - >人们说这是在谈论Spring MVC。 Spring MVC是Spring的许多部分之一,是一个使用Spring的一般特性的Web框架,就像依赖注入一样。 这是一个非常通用的框架,它是非常可配置的:您可以使用不同的数据库层(Hibernate,iBatis,普通的JDBC),不同的视图层(JSP,Velocity,Freemarker ...)

请注意,您可以在不使用Spring MVC的情况下,在Web应用程序中完美地使用Spring。 我会说大多数Java Web应用程序这样做,而使用像Wicket,Struts,煤层等其他Web框架...







接受的答案不涉及注释的使用,因为Spring引入了对配置的各种注释的支持。

Spring(依赖注入)方法

还有另外一种方法可以使用XML文件连接类:注释。 让我们使用接受的答案中的示例,并使用唯一的注释@Bean直接在类中注册bean:

@Bean
public class UserListerDB implements UserLister {
    public List<User> getUsers() {
        // DB access code here
    }
}

这样当视图被创建时,神奇的将会有一个UserLister准备好工作。

上面的语句是有效的,不需要任何XML文件的使用和接线另一个注释@Autowired ,找到一个相关的实现,并注入一点奖金。

@Autowired
private UserLister userLister;



Spring在开始时是依赖注入,然后为几乎所有东西(包装JPA实现等)添加包装王。

长篇故事... Spring preffer XML解决方案(XML脚本引擎... brrrr)的大部分部分,所以对于DI我使用Guice

良好的库,但随着越来越depnedenciec,例如Sprong JDBC(也许一个Java jdbc解决方案与实名参数)接下来从maven 4-5。

使用Spring MVC(“大春天”的一部分)进行Web开发...这是“基于请求的”框架,有圣战“请求与组件”