我有一个关于Spring -Bean及其与JavaEE的区别的小问题:为什么我必须在配置中(即从其他一些外部库中)在Spring中定义一些Bean,而在JavaEE中不定义?
诚挚的问候。
发布于 2016-08-02 03:27:21
这可不是个小问题。
JavaEE假设你有一个以标准方式提供服务的容器。您可以在应用服务器中运行应用程序,该服务器实现了规范的特定版本中描述的部分或全部API。您依赖于容器并按照它应该工作的方式使用它: Servlets、JSP、事务管理、JPA、CDI、身份验证和授权……
Spring是一个不同的野兽,主要在200x初EJB2的溃败中诞生。它首先表明您不需要完整的容器(这意味着您可以以不同的方式处理数据层),并且可以从依赖注入(DI)中受益。一开始,Spring完全是通过XML文件来完成DI的。这些就是您提到的配置文件。然后出现了Spring的不同子项目: Spring Integration、Spring Web Services、Spring Data、Spring Boot……和JavaEE的竞争功能。EJB 2被放弃了,取而代之的是非常受Hibernate启发的EJB 3。注释变得更受配置文件的青睐,等等。这是一个非常有机的过程,好的想法会努力变得更好。静态配置以某种方式出现在这里:在XML文件中,在分散在components类中的注释中,在专用于配置的类中……这可以看作是Spring的缺点,但这种复杂性允许您与大量的库和中间件集成,并按照您所看到的方式来塑造应用程序。
多年来,JavaEE和Spring已经成为竞争对手,JavaEE最近借鉴了Spring的一些伟大想法,例如CDI,但它们各自赋予底层容器的角色使它们非常不同。
https://stackoverflow.com/questions/38706130
复制相似问题