我不能从使用Spring而不是仅使用常规Java EE中受益,我认为原因是我对Spring所采用的设计原则的某些好处(依赖注入,等)。
例如,我不了解通过添加@Bean
,@Component
@Autowired
和@Repository
注释可以带来什么好处。
我的问题不是这些注释是做什么的,而是更多的是Spring使实现更容易或更有效的原则是什么?
答案 0 :(得分:1)
Dependency injection是fantastic 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>