在SpringBoot中应该避免的反模式 - Ali


Spring Framework 及其顶层实现 Spring Boot 和 Spring MVC 是 Java 世界中最常用的框架。它被使用得越多,随着时间的推移就会出现越多的不好和好的做法。
 
Spring DI:构造注入优先于 Field 和 Setter 注入
JavaBeans的字段和setter方法注入难以测试,容易发生循环依赖,是非常开放的可变性,此外,Setter 注入会导致样板代码。最好的解决方案是使用构造函数注入,这也是 Spring 官方推荐的。使用此方法可以轻松地使变量不可变。由于构造函数增长,因此很容易检测到依赖关系的增长。
 
忘记基于 XML 的配置
现在强烈反对基于 XML 配置 Spring 应用程序。基于 XML 的配置会导致样板代码,非常冗长,因此在 IDE 中阅读和搜索极其困难。最好的方法是使用嵌入在代码中的基于注释的配置。对于程序员来说,它很容易掌握并且更具可读性。
 
不正确的测试
测试基于 Web 的 Spring 应用程序经常被忽视。很少有团队通过完善的集成测试对 Spring Boot 应用程序进行广泛的测试。确保开发团队了解Spring 测试框架 提供的测试功能的威力。
 
不要从头开始手动构建新应用程序
许多传统程序员喜欢完全控制应用程序。所以他们尝试手动构建 pom 文件并从头开始构建应用程序。Spring 附带易于使用且方便的工具Spring Initializr,它可以创建具有正确选择的依赖项和正确结构的 Spring Boot 应用程序。这是从 Spring 正式生成新应用程序的推荐方式。当前的 IDE(如 Eclipse Intellij)具有用于Spring Initializr 的第三方插件。
 
没有好的日志
糟糕的日志记录是每个软件产品都头疼的问题。特别是,当生产错误出现时。不正确的日志记录使每个开发人员都感到困难,因为他/她盲目地寻找根本原因。LogBack是一个功能强大的插件,请务必正确使用它。
 
不要将 Spring 集成到核心业务逻辑中
RCMartin 的着名书籍“Clean Architecture”指出,业务逻辑代码应该不受任何第三方框架、数据库、UI 的影响。如果域没有框架,那么明天如果框架消失,核心业务代码将不会有技术债务。所以Domain类不应该像@Component、@Autowired、@Service那样有Spring的任何注解,而应该是传统实例化的简单Java类。