eclipse run on server 点不了finish_分享点经验 | springboot入门及编码

36e3e3d173ca943f45e8c85f79504559.png

点击蓝字关注我们

AMP

39e983e44845cc57a007cec088ad8218.png

很多新人在刚刚接触后端开发的时候,可能对springboot的概念、如何快速上手一个springboot项目多多少少有些一知半解;此外写出来的代码也因为不够规范而可读性较低,导致后期难以维护。本文旨在站在新手的视角,尽可能给出一个通俗的解释。

Let's get started~

36e3e3d173ca943f45e8c85f79504559.png

Spring是什么?

Spring是一个支持快速开发Java EE应用程序的框架。它提供了一系列底层容器和基础设施,并可以和大量常用的开源框架无缝集成,可以说是开发Java EE应用程序的必备。

Spring的两个核心思想是:

1、IOC-控制反转

我们知道,java中是通过new关键字来创建对象的,不仅麻烦而且容易造成资源浪费。所以IOC应运而生,有了它我们在实际代码中无需去一个个地手动new 对象,而是把对象的创建、对象间的关系、对象的销毁(生命周期管理)交给Spring容器去管理,只要从spring容器中拿对象来使用。

我们就先简单的理解为不用去new一个对象。

2、AOP-面向切片编程

36e3e3d173ca943f45e8c85f79504559.png

SpringBoot是什么?

Spring Boot是一个基于Spring的套件,它帮我们预组装了Spring的一系列组件,以便以尽可能少的代码和配置,来开发基于Spring的Java应用程序。

Spring Boot和Spring的关系就是整车和零部件的关系:

Spring相当于提供了汽车的零部件,但是要装好汽车上路,还需要我们自己动手。

而Spring Boot则相当于已经帮我们预装好了一辆可以上路的汽车,如果有特殊的要求,例如把发动机从普通款换成涡轮增压款,可以通过修改配置或编写少量代码完成。

总之,Spring和Springboot都是为了减少开发代码中的重复工作、给代码解耦(不至于改一个而动全局)、方便引入其他框架(可以理解成模板)而存在的框架。

36e3e3d173ca943f45e8c85f79504559.png

最简单的Springboot工程

Step1:maven安装和配置。初次需要,此略

Step2:使用Idea的 Spring Initializr:

选择 SDK,点击【new】这里就是使用 JAVA SDK 要求版本 1.8+,选择你默认安装在 C:\Program Files\Java\jdk1.8.0_191 目录:

91590f99366e3e227b7be1f6d50a902c.png

Step3:然后选择默认的 url (不用管)点击【Next】:

Step4:然后填写一下项目的信息:

注意:

1、此处group一般是域名反写,如

com.chinalife.xxx

2、Java版本选择当前安装的版本

Step5:先勾选上 Web 依赖:

ab75a75057af3bb0f476d06b123b17cb.png

Step6:勾选 SQl 下的 MySQL,MyBatis 依赖(连接数据库的):(根据自己的项目选择,后面可加)

Step7:选择好项目的位置,点击【Finish】。

此时我们来看看默认生成的有什么:

  • SpringbootApplication:一个带有 main() 方法的类,用于启动应用程序。即从这里开始RUN。

  • application.properties:一个空的 properties 文件,后期可以根据需要添加配置属性。如我们的项目使用了polardb,则该数据库的信息就添加在这里:

1ed15b6ad5e43ffeaf7da6636575550a.png
  • pom.xml:Maven 构建说明文件。即如果需要引入其他的包,在这里添加那个包的依赖信息即可。比如上段提到我们使用了polardb,就需要在此引入其依赖。如果没有这段依赖,我们需要手动把polardb相关代码复制进本工程,可读性极低。

2afdffcd68869b8fb0ddabbcdc813b69.png
  • SpringbootApplicationTests:一个空的 Junit 测试了,它加载了一个使用 Spring Boot 字典配置功能的 Spring 应用程序上下文。

36e3e3d173ca943f45e8c85f79504559.png

Java应用工程分层

1、Dao层

Dao层:持久层,主要与数据库交互,简言之就是通过将SQL语句和本项目中函数的对应,来封装对数据库的访问,将数据库中的对象“拿来”使用。

DAO层首先会创建Dao接口,接着就可以在配置文件中定义该接口的实现类。

c523a8b484221c0674f7a2e71e846b07.png

2、Entity层

Entity层:实体层,数据库在项目中的类

主要用于定义与数据库对象应的属性,提供get/set方法,tostring方法,有参无参构造函数

实例:我们的项目一个餐食管理系统,所以其中之一的实体类就是Dish。

839d85ac9bfed9b06f4d3fd990d5d8b4.png

3、Service层

Service层:业务层 控制业务

业务模块的逻辑应用设计,和DAO层一样都是先设计接口,再创建要实现的类,然后在配置文件中进行配置其实现的关联。Service主要存放业务相关的逻辑,比如我们的餐食系统里,存放餐食的增删改查功能。

好处:封装Service层的业务逻辑有利于业务逻辑的独立性和重复利用性。

9a795bab9aaae66c150ea167a1127288.png

接口

53a5d319bdff44bb1feae96dfc74ecbf.png

实现

4、Controller层

Controller层:控制层 控制业务逻辑

具体的业务模块流程的控制,controller层主要调用Service层里面的接口控制具体的业务流程。

Controller和Service的区别是:Controller负责具体的业务模块流程的控制;Service层负责业务模块的逻辑应用设计

637c72d19ad68097b03c30b687b71ff2.png

总结:controller层调用了Service层的方法,Service层调用Dao层的方法,其中调用的参数是使用Entity层进行传递的。

36e3e3d173ca943f45e8c85f79504559.png

一些其他便于理解的相关概念

容器、Docker和镜像:

容器是镜像的实例化:运行中的这个镜像称为容器。

Docker是一个开源的应用容器引擎,是一个轻量级容器技术。

Docker支持将软件编译成一个镜像;然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像。

为什么使用容器?

兼容各种环境+提供底层服务:

代码写好后难免会在不同的环境中运行(如在window/linux),容器的出现使之能适配各种环境,开发人员可以仅关注程序本身,省去很多繁琐的适配环境的配置工作。

此外,容器还提供了许多底层服务。例如,Servlet容器底层实现了TCP连接,解析HTTP协议等非常复杂的服务,如果没有容器来提供这些服务,我们就无法编写像Servlet这样代码简单,功能强大的组件。

36e3e3d173ca943f45e8c85f79504559.png

常见的编码规范

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。

如:

445f64ce60187fcd57fef42a3fe3c908.png

4.缩写注意事项:

杜绝词不达意的缩写,杜绝无意义的命名。如int a;

注意:第3、4条的严格遵守,有利于他人在维护代码时快速读懂。

5.常量及变量命名:

在常量与变量的命名时,表示类型的名词放在词尾,以提升辨识度。如:nameList

6.接口类与实现类的命名:

对于Service和DAO类,暴露出来的服务一定是接口,内部的实现类用Impl后缀与接口区别。

如:CacheServiceImpl实现CacheService接口

7.接口规范:

接口类中的方法和属性不要加任何修饰符号(public也不要加)。如:void commit();而非public abstract void commit();

其实在idea中,写了修饰符号会被提醒标灰:

cf2805ebdc6ca3e5cd6ad14756c2baff.png

8.各层命名规范:

      Service/DAO 层方法命名规约:

  • 获取单个对象的方法用 get 做前缀。

  • 获取多个对象的方法用 list 做前缀,复数结尾,如:listObjects。获取统计值的方法用 count 做前缀。

  • 插入的方法用 save/insert 做前缀。

  • 删除的方法用 remove/delete 做前缀。

  • 修改的方法用 update 做前缀。

以上就是对Springboot和编码规范的简单介绍,希望能帮助刚入门的小伙伴们更好的理解。

3ff24e94c213f3add0b67097c2cc161d.pngf617d7291f66912f235b78c42586c6c7.png

记得关注我哦~
点击下方

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/561219.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mac redis 客户端_分享一个免费好用的Redis桌面客户端

今天波波为做开发的朋友们分享一个免费好用的Redis桌面客户端。这个工具纯属机缘巧合下发现的,前几天波波在开发一个物联网平台,硬件通信部分用了Workman Gateway来负责通信和消息推送,结果因为自己把官方的文档理解错误,遇到了一…

实测实量数据表格_建筑工程质量实测实量操作手册,130页PPT下载!

来源:百度文库版权归原作者所有文件下载方式在最后第一篇 总 则1、适用范围2、取样总则第二篇 尺差控制篇1、混凝土结构工程2、实测实量数据、水平基准线上墙3、砌体工程4、抹灰工程5、设备安装6、涂饰工程7、饰面墙砖(石材)工程8、地面饰面砖(石材)工程9、吊…

0018计算机基础知识,0018 0019计算机应用基础上机试题

满意答案pgeqanyyafe2013.02.23采纳率:51% 等级:12已帮助:6328人有2套:复制发给你? 还是通过QQ发给你呢? 还是给你发到邮箱呢?第一套:《计算机应用基础》上机考试试题 姓名&…

java接口测试工具_【分享】接口工具对比(apipost、jmeter、postman、swagger等)

一、接口都有哪些类型?接口一般分为两种:1.程序内部的接口 2.系统对外的接口系统对外的接口:比如你要从别的网站或服务器上获取资源或信息,别人肯定不会把 数据库共享给你,他只能给你提供一个他们写好的方法来获取数据…

用flash做古诗动画_带孩子用两张A4纸做动画(内附资源可下载)

不要让孩子在成长过程中丢失了对自然的好奇心,在自然科学(物理,化学,生物,天文......)的实验中快乐成长,热爱生活,保护环境,探索精彩世界。科学爸爸的孩子从2014年四岁多开始对科学产生了浓厚兴…

promise的状态以及api介绍_2019年,盘点一些我出过的前端面试题以及对求职者的建议

笔者虽然曾经也面试过很多求职者,但是对于前端的笔试和面试,我觉得并不能体现一个人的真实能力,所以建议大家多修炼前端真正的技术.对于前端面试题,之前也承诺过读者要出一篇,笔者大致总结一下曾经面试的题目.后续不会再出面试题,而是聚焦于一些真正的,有利于成长性的技术文章和…

otis电梯服务器tt使用说明_南充私人电梯

南充私人电梯,成都蒂澳机电放心产品,并在麓山国际社区、麓湖别墅、蔚蓝卡地亚、城南官邸、城南逸家、复地御香山、万科五龙山、保利198、美城悦荣府、三利宅院、维也纳森林别墅、乐山御墅、华侨城纯水岸(东岸)、芙蓉古城等知名别墅楼盘均有大量成功案例。…

计算机上课创意互动游戏初中,16个课前热身小游戏:让每一堂课都充满新鲜感...

课堂正式开始之前,设置热身游戏,教学效果会更佳。它可以达到两个目的:一是把学生的注意力吸引到课堂;二是通过游戏自然过渡到课堂内容,增加课堂趣味性和学生参与感。受新冠病毒的影响,居家学习席卷全国&…

ros c++ 代码说明文档_减少运维工作量,如何通过 ROS 轻松实现资源编排新方式...

在日常工作中,我们一定遇到过需要快速构建系统的工作情形:作为资源管理人员,需要接收一定数量以及配置的资源申请,这些申请要求网络、存储设备按需到位;作为开发人员,需要将一套开发环境,复制一…

华硕和梅林系统哪个好_RUSHCRM:定制CRM软件系统哪个好?

Crm系统是一个可以帮助企业获得、维护以及提升客户价值的系统,并且做到以客户为中心的管理模式。但是有不少企业在选择crm软件系统的过程中,会发现在国内crm系统的市场中,绝大多数crm系统的功能都不能完全满足企业的需求,那么就需…

字典哈希表的实现原理_GCC中unordered_(multi)set/map的实现原理 (Part 2 图解哈希表结构)...

写在前面(本专栏仅是个人笔记本,有胡言乱语和错漏部分)本文以图文代码的形式记录了_Hashtable的结构,如何编排每一个bucket的链表,如何将每个bucket的链表串在一起形成一个长链表,如何利用迭代器遍历_Hasht…

null === undefined_【英】两个“非值”:undefined 和 null

前言本期英文由Dr. Axel Rauschmayer分享。英文从这开始~~Most programming languages have only one value for “no value” or “empty reference”. For example, that value is null in Java. JavaScript has two of those special values: undefin…

有趣的编程代码_iPad amp; Mac 编程游戏推荐

今天想给大家推荐一款免费的编程 App,它的名字叫「Swift Playgrounds」。会不会有人一看到“编程”两个字就觉得怕了怕了,感觉太深奥了?但是,这款游戏真的简单又有趣,值得你去试试。▍应用介绍这是一款适用于 Mac 和 i…

tensorflow支持python3.7吗_TensorFlow2.1正式版上线:最后一次支持Python2,进一步支持TPU...

机器之心报道参与:杜伟、一鸣TensorFlow2.1的更新,能够让弃坑的用户回心转意吗?去年 10 月,谷歌才发布了 TensorFlow 2.0 正式版。时隔三个月后,昨日官方发布了 TensorFlow 2.1,本次版本更新带了了多项新特…

hashmap containsvalue时间复杂度_不看看HashMap源码,怎么和面试官谈薪资

HashMap 是日常开发中,用的最多的集合类之一,也是面试中经常被问到的 Java 类之一。同时,HashMap 在实现方式上面又有十分典型的范例。不管是从哪一方面来看,学习 HashMap 都可以说是有利无害的。分析 HashMap 的源码的文章在网上…

tcp序列号为什么是随机的_译文:每个开发人员应了解的 TCP 知识

为什么要把服务器放在离用户很近的地理位置上?其中一个原因是为了实现更低的延迟。当您发送的数据是短的、应该尽可能快的传输数据时,这很有意义。但如果是大文件,比如视频等大文件呢?当然,在接收第一个字节时肯定会有…

matlab时域转换成频域_从时域到频域,你只需要旋转一下!

作为一个工科生,这里我不去说很多的严密的定理和知识,我只是从我的角度,形象的去理解时域和频域。首先我们来观察一个画在空间直角坐标系中的正弦函数:现在我们从两个视角去观察它分别是垂直于xoz面和垂直于yoz面看到的图像如下&a…

win7右键计算机管理参数错误,win7纯净版虚拟磁盘管理器参数错误怎么解决?

最近有用户反映win7纯净版虚拟磁盘管理器参数错误,他是硬盘分区太多,很乱,所以想要自己设置盘符名称,但没想到在修改盘符时出现提示“硬盘参数错误”,导致修改盘符失败,这让用户非常苦恼。那么,…

mysql查看用户名_Mysql创建数据表的方法介绍(附示例)

本篇文章给大家带来的内容是关于Mysql创建数据表的方法介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。数据表是数据库最重要的组成部分之一,是其他对象的基础。如果我们的数据库没有数据表就等于没有…

vue读取终端硬件信息_双通道RFID模块助力电力数据采集终端(不必多说,直接测试对比)...

推动超高频技术应用的RFID模块打包模组、全面简化设计极高的性价比,让更多领域用得起超高频RFIDM6002 是我司自主研发的一款高性能双通道嵌入式超高频RFID 读写模块,该模块主要是解决单通道读写模块的空间盲点问题,弥补单通道读写模块在应用中…