2、使⽤⾃动配置
使⽤它的最简单⽅法是依赖Spring Boot Starters。因此,如果你想与Redis进⾏集成,你可以⾸先包括:
如果你想与MongoDB进⾏集成,需要这样:
但只有在绝对必要时才应该这样做。
这项任务涉及较多⼯作,因此你需要考虑何时获益是值得投⼊的。与多个略有不同的定制配置相⽐,维护单个⾃动配置更容易。
如果将这个提供Spring Boot配置以开源库的形式发布出去,那么将极⼤地简化数千个⽤户的配置⼯作。有关⾃动配置点击这⾥有⼀篇实战⽂章。
5、正确设计代码⽬录结构
尽管允许你有很⼤的⾃由,但是有⼀些基本规则值得遵守来设计你的源代码结构。
避免使⽤默认包。确保所有内容(包括你的⼊⼝点)都位于⼀个名称很好的包中,这样就可以避免与装配和组件扫描相关的意外情况;
将Application.java(应⽤的⼊⼝类)保留在顶级源代码⽬录中;
我建议将控制器和服务放在以功能为导向的模块中,但这是可选的。⼀些⾮常好的开发⼈员建议将所有控制器放在⼀起。不论怎样,坚持⼀种风格!
6、保持@Controller的简洁和专注
控制器应该是⽆状态的!默认情况下,控制器是单例,并且任何状态都可能导致⼤量问题;
控制器不应该执⾏业务逻辑,⽽是依赖委托;
控制器应该处理应⽤程序的HTTP层,这不应该传递给服务;
控制器应该围绕⽤例/业务能⼒来设计。
要深⼊这个内容,需要进⼀步地了解设计REST API的最佳实践。⽆论你是否想要使⽤Spring Boot,都是值得学习的。
7、围绕业务功能构建@Service
Service是Spring Boot的另⼀个核⼼概念。我发现最好围绕业务功能/领域/⽤例(⽆论你怎么称呼都⾏)
来构建服务。
在应⽤中设计名称类似AccountService, UserService, PaymentService这样的服务,⽐起像DatabaseService、ValidationService、CalculationService这样的会更合适⼀些。
你可以决定使⽤Controler和Service之间的⼀对⼀映射,那将是理想的情况。但这并不意味着,Service之间不能互相调⽤!
8、使数据库独⽴于核⼼业务逻辑之外
我之前还不确定如何在Spring Boot中最好地处理数据库交互。在阅读了罗伯特·C·马丁的“Clear Architecture”之后,对我来说就清晰多了。
你希望你的数据库逻辑于服务分离出来。理想情况下,你不希望服务知道它正在与哪个数据库通信,这需要⼀些抽象来封装对象的持久性。
罗伯特C.马丁强烈地说明,你的数据库是⼀个“细节”,这意味着不将你的应⽤程序与特定数据库耦合。过去很少有⼈会切换数据库,我注意到,使⽤Spring Boot和现代微服务开发会让事情变得更快。
9、保持业务逻辑不受Spring Boot代码的影响
考虑到“Clear Architecture”的教训,你还应该保护你的业务逻辑。将各种Spring Boot代码混合在⼀起是⾮常诱⼈的……不要这样做。如果你能抵制诱惑,你将保持你的业务逻辑可重⽤。
部分服务通常成为库。如果不从代码中删除⼤量Spring注解,则更容易创建。
10、推荐使⽤构造函数注⼊
这⼀条实践来⾃Phil Webb(Spring Boot的项⽬负责⼈, @phillip_webb)。
保持业务逻辑免受Spring Boot代码侵⼊的⼀种⽅法是使⽤构造函数注⼊。 不仅是因为@Autowired注解在构造函数上是可选的,⽽且还可以在没有Spring的情况下轻松实例化bean。
11、熟悉并发模型
在Spring Boot中,Controller和Service是默认是单例。如果你不⼩⼼,这会引⼊可能的并发问题。 你通常也在处理有限的线程池。请熟悉这些概念。
这很重要,因为它可以让你根据需要设置不同的⽇志记录级别。有关Spring Boot⽇志集成点击这⾥有⼀篇实战⽂章
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论