我有一个关于Spring-Beans的小问题以及与JavaEE的区别: 为什么我必须在配置中定义Spring中的一些Beans(即其他一些外部库)和JavaEE中没有?
最好的问候。
答案 0 :(得分:2)
这不是一个小问题。
JavaEE假设您有一个以标准方式提供服务的容器。您可以在应用程序服务器中运行应用程序,该服务器实现特定版本规范中描述的部分或全部API。您依赖容器并按原样使用它:Servlet,JSP,事务管理,JPA,CDI,身份验证和授权......
Spring是一个不同的野兽,主要出现在200x早期的EJB 2的溃败中。它首先显示您不需要一个完整的容器(意味着您可以以不同的方式执行数据层)并且可以从依赖注入(DI)中受益。最初,Spring是关于DI通过XML文件完成的。这些是您提到的配置文件。接下来是Spring的不同子项目:Spring Integration,Spring Web Services,Spring Data,Spring Boot ......以及与JavaEE竞争的功能。 EJB 2被弃用,支持受Hibernate启发的EJB 3.注释变得受配置文件等的青睐。这是一个非常有机的过程,好的想法力求变得更好。仍然是这样或那样的配置:在XML文件中,在分散在组件类中的注释中,在专用于配置的类中......这可以被视为Spring的缺点,但是这种复杂性允许您集成大量的数据lib和中间件,以你看到它的方式塑造应用程序。
多年来,JavaEE和Spring已经成为竞争对手,JavaEE最近采用了Spring的一些好主意,例如CDI,但是它们各自赋予底层容器的角色使它们大不相同。