春季-未发表意见的惯例

时间:2018-07-25 14:06:42

标签: spring

关于Spring文档,有两件事似乎相互矛盾。我知道我可能在考虑这个问题,但是我想看看其他人对此有何评论:

  
      
  1. Spring拥有灵活性,并且对如何做事情没有自决的态度(即,如果有框架的话,它会锁定或引导您执行其工作方式)。 Reference
  2.   
  3. Spring还接受约定而非配置。 Reference
  4.   

约定的存在是否表示Spring有一种处理方法?

Spring在说有约定的情况下又怎能不自以为是?

就像我说的那样,我可能在考虑这个问题...

2 个答案:

答案 0 :(得分:1)

我认为你把这两个句子混在一起了。
它并不能说明Spring约定没有被接受。
惯例总是固执己见。

第一点是:

  

适应不同的观点。 Spring拥有灵活性,是   没有对应该如何做的看法。它支持广泛   各种角度的应用需求。

第二个是:

  

它基于Spring框架,更倾向于约定俗成   配置,旨在使您尽快启动并运行   可能。

事实上,Spring尊重了这两点,但是它们并没有应用于同一级别。
第一点涉及Spring作为设计应用程序的选项提供的灵活性。
第二点是Spring提供的减少配置模板代码的约定,优于配置方式。无论您要使用什么选项,这都是正确的。


以下是一些带有示例的细节:

第一点意味着Spring提供了多种方法来做某事。它不会强迫您使用特定的方法来实现您的目标。 我会给你一些例子来说明这一点。
例如,假设您要执行一些持久性操作。 Spring提供了支持以多种方式实现它的方法:JDBC,JPA,NoSQL ... 而且,当您进一步深入研究时,对于较低级别的事物也是如此。
作为数据持久性帮助者,Spring提供了很多东西:JdbcTemplateCrudRepositoryJpaRepository and,因此......
另一个示例:执行依赖项注入时,没有一种唯一的方法:可以使用setter,field,构造函数甚至工厂方法注入。
这种事情就是 Spring的灵活性

关于第二点:关于配置的约定是Spring的非常基本的内容。
它依赖于以下事实:当您要使用Spring提供的任何特定组件,功能时,默认情况下将使用通用的默认配置对其进行设置,这也是大多数用户所需的通用方式。
例如,bean比原型更常见于单例。因此,Spring默认情况下为bean配置原型作用域。其他示例:明确命名每个bean都是地狱。因此,Spring使用简单类名的驼峰式大小写来定义bean名称。
最后一个例子表明两点并不矛盾:您有多种方法来指定bean的依赖项注入。
如果您使用参数定义构造函数,则会自动应用注入选项( flexibility )(基于配置的约定)。您不需要指定@Autowired,因为Spring使它成为惯例。
您在Spring和Spring Boot中有数百个类似的示例,这些示例将进一步促进约定俗成的配置方式。

答案 1 :(得分:1)

  

约定的存在是否表示Spring有一种处理方法?

“一种开箱即用的方式,旨在使入门变得容易”。

  

Spring在说有约定的情况下又怎能不自以为是?

公约:一种通常用于完成工作的方式,尤其是在特定区域或活动中

Spring当然具有约定(#2),但会努力提供一切机会提供替代解决方案(#1)来替换默认约定。

如果我要一起重写冗长的#1#2

  

Spring怀着对常规默认值的看法的灵活性,这对于大多数工程师来说应该可以简化实施(即“常规配置”)。但是,如果您选择覆盖常规默认值,Spring对于最终应如何实现事情没有意见。