点击蓝字关注我们
AMP
很多新人在刚刚接触后端开发的时候,可能对springboot的概念、如何快速上手一个springboot项目多多少少有些一知半解;此外写出来的代码也因为不够规范而可读性较低,导致后期难以维护。本文旨在站在新手的视角,尽可能给出一个通俗的解释。
Let's get started~
Spring是什么?
Spring是一个支持快速开发Java EE应用程序的框架。它提供了一系列底层容器和基础设施,并可以和大量常用的开源框架无缝集成,可以说是开发Java EE应用程序的必备。
Spring的两个核心思想是:
1、IOC-控制反转
我们知道,java中是通过new关键字来创建对象的,不仅麻烦而且容易造成资源浪费。所以IOC应运而生,有了它我们在实际代码中无需去一个个地手动new 对象,而是把对象的创建、对象间的关系、对象的销毁(生命周期管理)交给Spring容器去管理,只要从spring容器中拿对象来使用。
我们就先简单的理解为不用去new一个对象。
2、AOP-面向切片编程
SpringBoot是什么?
Spring Boot是一个基于Spring的套件,它帮我们预组装了Spring的一系列组件,以便以尽可能少的代码和配置,来开发基于Spring的Java应用程序。
Spring Boot和Spring的关系就是整车和零部件的关系:
Spring相当于提供了汽车的零部件,但是要装好汽车上路,还需要我们自己动手。
而Spring Boot则相当于已经帮我们预装好了一辆可以上路的汽车,如果有特殊的要求,例如把发动机从普通款换成涡轮增压款,可以通过修改配置或编写少量代码完成。
总之,Spring和Springboot都是为了减少开发代码中的重复工作、给代码解耦(不至于改一个而动全局)、方便引入其他框架(可以理解成模板)而存在的框架。
最简单的Springboot工程
Step1:maven安装和配置。初次需要,此略
Step2:使用Idea的 Spring Initializr:
选择 SDK,点击【new】这里就是使用 JAVA SDK 要求版本 1.8+,选择你默认安装在 C:\Program Files\Java\jdk1.8.0_191 目录:
Step3:然后选择默认的 url (不用管)点击【Next】:
Step4:然后填写一下项目的信息:
注意:
1、此处group一般是域名反写,如
com.chinalife.xxx
2、Java版本选择当前安装的版本
Step5:先勾选上 Web 依赖:
Step6:勾选 SQl 下的 MySQL,MyBatis 依赖(连接数据库的):(根据自己的项目选择,后面可加)
Step7:选择好项目的位置,点击【Finish】。
此时我们来看看默认生成的有什么:
SpringbootApplication:一个带有 main() 方法的类,用于启动应用程序。即从这里开始RUN。
application.properties:一个空的 properties 文件,后期可以根据需要添加配置属性。如我们的项目使用了polardb,则该数据库的信息就添加在这里:
pom.xml:Maven 构建说明文件。即如果需要引入其他的包,在这里添加那个包的依赖信息即可。比如上段提到我们使用了polardb,就需要在此引入其依赖。如果没有这段依赖,我们需要手动把polardb相关代码复制进本工程,可读性极低。
SpringbootApplicationTests:一个空的 Junit 测试了,它加载了一个使用 Spring Boot 字典配置功能的 Spring 应用程序上下文。
Java应用工程分层
1、Dao层
Dao层:持久层,主要与数据库交互,简言之就是通过将SQL语句和本项目中函数的对应,来封装对数据库的访问,将数据库中的对象“拿来”使用。
DAO层首先会创建Dao接口,接着就可以在配置文件中定义该接口的实现类。
2、Entity层
Entity层:实体层,数据库在项目中的类
主要用于定义与数据库对象应的属性,提供get/set方法,tostring方法,有参无参构造函数。
实例:我们的项目一个餐食管理系统,所以其中之一的实体类就是Dish。
3、Service层
Service层:业务层 控制业务
业务模块的逻辑应用设计,和DAO层一样都是先设计接口,再创建要实现的类,然后在配置文件中进行配置其实现的关联。Service主要存放业务相关的逻辑,比如我们的餐食系统里,存放餐食的增删改查功能。
好处:封装Service层的业务逻辑有利于业务逻辑的独立性和重复利用性。
接口
实现
4、Controller层
Controller层:控制层 控制业务逻辑
具体的业务模块流程的控制,controller层主要调用Service层里面的接口控制具体的业务流程。
Controller和Service的区别是:Controller负责具体的业务模块流程的控制;Service层负责业务模块的逻辑应用设计
总结:controller层调用了Service层的方法,Service层调用Dao层的方法,其中调用的参数是使用Entity层进行传递的。
一些其他便于理解的相关概念
容器、Docker和镜像:
容器是镜像的实例化:运行中的这个镜像称为容器。
Docker是一个开源的应用容器引擎,是一个轻量级容器技术。
Docker支持将软件编译成一个镜像;然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像。
为什么使用容器?
兼容各种环境+提供底层服务:
代码写好后难免会在不同的环境中运行(如在window/linux),容器的出现使之能适配各种环境,开发人员可以仅关注程序本身,省去很多繁琐的适配环境的配置工作。
此外,容器还提供了许多底层服务。例如,Servlet容器底层实现了TCP连接,解析HTTP协议等非常复杂的服务,如果没有容器来提供这些服务,我们就无法编写像Servlet这样代码简单,功能强大的组件。
常见的编码规范
1.命名的大小写:
类名使用UpperCamelCase风格,如:XmlService
方法名、参数名、成员变量、局部变量使用lowerCamelCase风格,如:inputUserId
包名使用小写,点分隔符之间有且仅有一个自然语义的英文单词。包名统一用单数形式。但类名如果有复数含义可以用复数形式。如:com.chinalife.ai.util
2.[]的位置:
类型和[]之间无空格相连定义数组,如:String[] args,int[] arrayDemo。而非String args[],int []arrayDemo
3.缩进:
良好的缩进有利于让他人在维护代码时,迅速的了解代码的逻辑结构。
(1)大括号的使用约定。如果是大括号内为空,则简洁地写成{}即可,不需要换行;如果 是非空代码块则:1) 左大括号前不换行。2) 左大括号后换行。3) 右大括号前换行。4) 右大括号后还有 else 等代码则不换行;表示终止的右大括号后必须换行。
(2)左小括号和字符之间不出现空格;同样,右小括号和字符之间也不出现空格。反例:if (空格 a == b 空格)
(3)if/for/while/switch/do 等保留字与括号之间都必须加空格。
(4)采用 4 个空格缩进,禁止使用 tab 字符。说明:如果使用 tab 缩进,必须设置 1 个 tab 为 4 个空格。IDEA 设置 tab 为 4 个空格时, 请勿勾选 Use tab character;而在 eclipse 中,必须勾选 insert spaces for tabs。
如:
4.缩写注意事项:
杜绝词不达意的缩写,杜绝无意义的命名。如int a;
注意:第3、4条的严格遵守,有利于他人在维护代码时快速读懂。
5.常量及变量命名:
在常量与变量的命名时,表示类型的名词放在词尾,以提升辨识度。如:nameList
6.接口类与实现类的命名:
对于Service和DAO类,暴露出来的服务一定是接口,内部的实现类用Impl后缀与接口区别。
如:CacheServiceImpl实现CacheService接口
7.接口规范:
接口类中的方法和属性不要加任何修饰符号(public也不要加)。如:void commit();而非public abstract void commit();
其实在idea中,写了修饰符号会被提醒标灰:
8.各层命名规范:
Service/DAO 层方法命名规约:
获取单个对象的方法用 get 做前缀。
获取多个对象的方法用 list 做前缀,复数结尾,如:listObjects。获取统计值的方法用 count 做前缀。
插入的方法用 save/insert 做前缀。
删除的方法用 remove/delete 做前缀。
修改的方法用 update 做前缀。
以上就是对Springboot和编码规范的简单介绍,希望能帮助刚入门的小伙伴们更好的理解。
记得关注我哦~
点击下方