2016-08-01 108 views

回答

2

这不是一个小问题。

JavaEE认为您已经获得了以标准方式提供服务的容器。您可以在应用程序服务器中运行应用程序,该应用程序服务器实现特定版本规范中描述的部分或全部API。你依赖于容器,并使用它,因为它应该工作:Servlets,JSP,事务管理,JPA,CDI,身份验证和授权...

春天是一个不同的野兽主要是在EJB 2早期200x。它首先表明你不需要一个完整的容器(意味着你可以做不同的数据层),并且可以从依赖注入(DI)中受益。一开始,Spring就是通过XML文件完成DI的。这些是你提到的配置文件。然后是Spring的不同子项目:Spring Integration,Spring Web Services,Spring Data,Spring Boot ...以及JavaEE的功能性竞争。 EJB 2因为受到Hibernate启发的EJB 3而被抛弃。注释开始受到配置文件的青睐,等等。这是一个非常有机的过程,好的想法力求变得更好。仍然是这样或者那样的配置:在XML文件中,在组件类中分散的注释中,在专用于配置的类中......这可以被看作是Spring的缺点,但这种复杂性使您能够与巨大的数量的库和中间件,并以你看到它的方式塑造应用程序。多年来,JavaEE和Spring已经成为竞争对手,最近JavaEE采用了Spring的一些伟大想法,例如CDI,但是它们每个人对底层容器的作用使得它们完全不同。

+0

谢谢您的详细解答。但从你的回答来看,目前还不清楚为什么在Spring中有必要定义一些bean。在标准的JavaEE应用程序中,我可以注入每个我想要的类。在Spring中,可能有必要在Bean之前定义Bean。或者说“容器”是答案,唯一的原因是?我认为Spring应用程序上下文也是一种容器。 – smsnheck

+0

我会尽力澄清是否可以,但正如我所说这不是一个小问题。 JavaEE是关于容器的。有servlet和EJB容器,现在我们将讨论配置文件,web配置文件大致是servlet容器的发展。但容器对于如何为所谓的企业应用程序做事情有意见。 Spring中的容器是一个DI容器。除了基于某种形式的声明的线对象之外,它不提供其他功能:XML,然后注释和组件扫描,然后是Java配置。它仍然是你的决定使用什么技术来连接的技术。 –

+0

谢谢。现在我明白了这些原则。 – smsnheck

相关问题