什么使Spring受益?

时间:2018-12-26 22:27:44

标签: spring design-patterns dependency-injection

我不能从使用Spring而不是仅使用常规Java EE中受益,我认为原因是我对Spring所采用的设计原则的某些好处(依赖注入,等)。

例如,我不了解通过添加@Bean@Component @Autowired@Repository注释可以带来什么好处。

我的问题不是这些注释是做什么的,而是更多的是Spring使实现更容易或更有效的原则是什么?

2 个答案:

答案 0 :(得分:1)

Dependency injectionfantastic pattern。它通常使您可以轻松地对需要复杂模拟或存根的组件进行单元测试。

值得指出的是,可以使用依赖注入而无需将对象生命周期和“接线”传递到container。我始终使用依赖项注入。但是,我只会考虑将依赖注入框架用于大型项目。例如,去年我用Java编写了大约2k行的网络服务器,并选择不使用“托管”依赖项注入。我的团队同意,这种安排提供了依赖项注入的所有体系结构优势,而没有DI框架的缺点(膨胀,样板,反射等)。但是,如果是20万行,我可能会做出其他选择。

由于您是在询问Spring的好处,而不是一般的DI / IoC,因此我不得不说,我认为Spring的设计很差。 Spring的历史与困扰Enterprise Java社区的反模式和不良抽象的历史息息相关。公平地说,我尊敬的工程师告诉我Spring Boot更好。当然可以尝试一下,您将了解什么有效或无效。但也许也可以考虑other options坚持UNIX philosophy,只关注依赖注入。

答案 1 :(得分:0)

  

Spring使创建Java企业应用程序变得容易。它   提供在Java语言中包含Java语言所需的一切   企业环境,并支持Groovy和Kotlin   JVM上的其他语言,并且可以灵活地创建   取决于应用程序需求的多种架构。作为   Spring Framework 5.0,Spring需要JDK 8+(Java SE 8+)并提供   对JDK 9的开箱即用的支持。

阅读手册: https://docs.spring.io/spring/docs/5.1.4.BUILD-SNAPSHOT/spring-framework-reference/

有大量有用的信息。

  

我的问题不是这些注释的作用,问题更多   Spring使实现更容易的原理是什么   或更有效?

IoC容器,许多项目和集成,带有嵌入式servlet容器的Spring Boot。许多内置功能。<​​/ p>