文章开头申明,如果你迫切需要飞快使用springboot做项目,并不需要了解太多理论知识,那么就可以靠这篇文章一遍过,半小时直接项目上手(确信)。另外,大佬就别看了,这篇文章本质上是一个前端开发在讲述自己学习springboot的全过程,而且之前基本没有强类型语言编程经验。
这篇文章的目的,大概是让一个人可能连java干什么用的都不知道,就可以自己做出比较完善的个人项目的程序,至于理论知识啥的,可以后面一边做一边补,网上的视频教程简直太慢了。
所以真!大佬止步,里面的代码肯定存在很多新手特有的不够规范,但是可以解决问题的标志性特征。
我的学习过程就是,5天过完了一遍java基础,1天摸了Springboot,后面半个月一边做springboot项目一边巩固积累,而且中间有很多地方是第一次学进了误区,实际上准备齐全的话,时间可能更少。
学习前提
1.有编程经验的肯定更快,强类型语言编程经验的,那就是神速。
2.没有编程经验的,点击这个地址,过一遍java的整个基础知识(注意,不需要死记硬背,就是过一遍,让自己留个初步印象)
3.电脑配置高一点,至少8G内存还是要有的(Redis这种基础东西很占内存)
第一步:安装基本环境
1.直接前往官方下载最新的企业版,地址是:点击进入,下载好之后可以自己去淘宝买激活账号(10块钱左右),或者从网上找破解补丁(不建议,但是确实能用)。
2.配置java环境,可以直接去官方下载,按照网上的教程安装(java高版本兼容低版本,但是综合考虑的话可以下载一些稳定版)。或者用我提供的超快速组合包,我不在文章里说怎么用,反正下载解压了你肯定可以傻瓜式配置完环境。弄完了打开cmd,输入java -version确认结果是这样就行。
链接:https://pan.baidu.com/s/1NoWfdOAUkB7i1YQUrxJ5XA
提取码:0k3z
3.安装mysql数据库,如果要专业的话,可以去网上下载mysql安装包,配套mysql管理工具Navicat。如果超省事的话(推荐),去这里下载一个phpstudy,启动之后只开启mysql服务(用户名和密码都是root),前后网速快可能就两分钟,下载地址:点击进入
4.mysql的管理工具就用phpstudy自带的就行,打开之后看见localhost那个就是链接本地数据库的。
5.安装redis(这玩意都快成基本配置了),这里我也整理了一个超快速组合包,里面的Redis就是Redis,RedisDesktopManager是管理程序。执行Redis文件夹中的start.bat就可以运行redis,执行RedisDesktopManager文件夹中的rdm.exe就可以运行管理程序。
链接:https://pan.baidu.com/s/1VY6jP4sbhWJ7z6pTPdd54A
提取码:bzq0
上面的一堆尽量控制在半小时内完成哦,要快
第二步:上手Springboot(不要虚,直接开始做项目)
1.准备好数据库,可以自行打开数据库管理程序,新建一个数据库(记得选择UTF-8编码),然后创建数据表和字段,都是傻瓜式不用写指令。如果不懂mysql数据库,可以直接去百度下了解数据库的用途和基本的原理,有编程基础的可能都不需要我在这里废话文学
2.然后,开始写springboot代码!当然不是从底层开始写,直接代码生成器一套全部生成(这年头谁还从底层写啊【暴论】)。这里我推荐Code-Generate,这个工具可以直接根据你的创建的数据库和数据表,直接生成全套的后端接口和前端页面。
可能你会问,那都生成了还要我作甚?答案是它生成的代码只有基本的增删改查(避免重复造轮子),实际的情况下,比如涉及到用户登录验证,redis处理和复杂一些的查询,还是需要自己写的。
Code-Generate下载地址:点击进入
如果github进不去,可以用我的百度云网盘链接。
链接:https://pan.baidu.com/s/1hNL436iCsok_OhwlHDOBig
提取码:hdtx
3.用前面安装的IDEA打开下载解压好的Code-Generate。注意,每次打开项目的时候IDEA都会进行一个加载进度,特别是第一次打开的话,IDEA会进行包的下载和导入,所以一定到等待右下角的进度条走完再操作。
4.完成之后,直接编辑properties,修改数据库等一堆信息,反正根据提示信息修改完,最后,执行项目,就会在你指定的文件夹生成属于你的项目。
5.用IDEA打开通过Code-Generate生成的文件夹,项目就正式创建完成了,而且自带了前端页面,后端接口,数据库增删改查定义。重要的文件夹我都圈了出来,之后主要改的就是这些。然后可以直接通过Application文件运行项目,查看效果,也可以通过右上角的几个按钮开控制运行或者调试。
6.运行项目后,默认的访问域名是localhost:8080或者127.0.0.1:8080,8080这个端口在application.properties这个文件中修改,如果冲突了就改下。
上面的一堆结束之后,你的项目就创建完成了,直接启动就可以看所有的页面。其中entity对应的是类(讲人话就是把数据库中的字段全部定义封装了一遍),dao和service两个定义了常用的方法(增删改查,和一堆可能用到的操作),mapper这个文件,所简单点就是所有的数据库语句丢在里面,让dao和service配合调用,而web就是定义接口的访问路径,和访问后的方法处理。当然,我这些话可以不用理解,直接过一遍就好,上面的步骤尽量五分钟内完成吧。
可以把代码都打开看看,Ctrl+Shift+r就可以全局搜索,多看看明白为啥这样分类。
第三步:常用的文件说明
1.项目根目录会看到一个pom.xml,这个文件主要用于定义项目名称,项目版本,和项目作者,然后就是在这里申明要引入什么包。比如,引入redis。注意,每次修改了pom.xml,都要去刷新生效。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>2.0.6.RELEASE</version>
</dependency>
2.点进src/main/resources之后,会看到application.properties这个文件,这里负责一些全局的字段定义。这里的定义为两种,一种是系统组件自带的字段,比如端口号和日志文件存放路径。一种就是自定义的字段,随便自己怎么定义抖音,用于在项目中调用,比如我定义一个我项目中要用到的自定义的。
webinfo.title=规则之树
或者是给系统组件字段定义:
logging.file=/log/RuleApi
3.点进src/main/java之后,就会看到自己的包名,再打开就可以看到项目主要代码文件,这里重点提到web文件,打开之后可以看到一堆名称带Controller(控制器)的文件,反正不用明白是啥含义,只需要知道,这些Controller文件打开之后,里面就可以看到比如:
@Controller
@RequestMapping(value = "/upload")
上面就是定义访问这个控制器是路径是/upload,下面的方法上面,还会有如下代码:
@RequestMapping(value = "/cosUpload",method = RequestMethod.POST)
@ResponseBody
那么含义就是,这个接口通过/upload/cosUpload访问,而且只允许POST请求。如果去掉后面的method,那就是不限制请求类型。具体可以运行项目后访问看看,而且所有的方法,这个生成的项目都给出了现成的参考代码,当然也可以看看我做的开源项目,里面有很多我自定义的方法,基本涵盖了大部分需求,毕竟CV工程师的领会就是参考借鉴嘛。
我的项目:点击进入
4.点进src/main/resources之后,会看到mapper文件夹,打开后是一堆xml文件,这里面就是数据库语句的调用,乍一看好像很复杂其实就是xml形式的if else在把mysql的脚本重组判断而已,本质上就是一堆数据库脚本,不过文件的开头会引入entity类,不用去太复杂的理解,就相当于是把类和数据库的字段给对应上。
还是那句话,这个生成器生成的代码,里面的注释是很详细的,假如你已经在菜鸟教程过完了一遍java基础,很多地方就能刚好对应上,基本很快就能理解,而且反正这个项目是生成出来的,要勇于瞎几把修改,改坏了再生成呗。
第四步:新手常用方法类和需求现成代码
Springboot实现SMTP邮箱发送。
1.首先编辑pom.xml,引入邮箱的包。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
2.其次编辑application.properties,新增如下代码:
spring.mail.host=smtp.qq.com
spring.mail.username=
#spring.mail.from不支持中文,需要中文,看mail.properties
spring.mail.password=
#465或者994
spring.mail.properties.mail.smtp.port: 465
spring.mail.properties.mail.smtp.ssl.enable: true
spring.mail.default-encoding=UTF-8
#这里是自定义一个字段,用来给邮箱做名称
webinfo.title=规则之树
3.主要设置username和password,反正谷歌邮箱,微软邮箱,网易邮箱,QQ邮箱等一堆都支持,不过我建议QQ邮箱,不为啥,因为快,设置完之后在service文件夹里,丢入我分享的这个文件,报错就把上面的package改一下就好(JAVA基础有讲的,回去看就行)
邮箱发送代码.zip
4.代码里就这样用,首先在web文件夹,需要用的控制器文件里,加入我圈出来的代码,然后代码刚放进去会出现红色提示,鼠标放上去会提示导包或者引入,直接Alt+Enter就行。
5.用法案例是如下这样,也可以直接去看我的开源项目怎么写:
String email = "邮箱地址";
MailService.send("邮箱的标题", "邮箱的内容",new String[] {email}, new String[] {});
Springboot使用redis缓存
1.同样的pom.xml引入redis组件
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>2.0.6.RELEASE</version>
</dependency>
2.编辑application.properties,新增如下代码:
# redis配置
spring.session.store-type=redis
spring.redis.host=127.0.0.1
spring.redis.password=
spring.redis.port=6379
# 连接池最大连接数(使用负值表示没有限制)
spring.redis.jedis.pool.max-active=20
# 连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.jedis.pool.max-wait=-1
# 连接池中的最大空闲连接
spring.redis.jedis.pool.max-idle=10
# 连接池中的最小空闲连接
spring.redis.jedis.pool.min-idle=0
# 连接超时时间(毫秒)
spring.redis.timeout=3000
3.配置正确后,把我提供的文件,解压丢入生成项目的common文件夹中。
RedisHelp.zip
4.在web文件夹的控制器中,就这么使用(如果不理解,不知道放在什么位置,可以去看我的开源项目):
@Autowired
private RedisTemplate redisTemplate;
RedisHelp redisHelp =new RedisHelp();
定义完之后,下面是使用方式:
//获取存入的字符串类型redis
String text = redisHelp.getRedis("字段名称",redisTemplate);
//存入字符串类型redis
redisHelp.setRedis("字段名称","字段值",过期时间(s),redisTemplate);
//获取存入的map类型redis
Map map = redisHelp.getMapValue("字段名称",redisTemplate);
//存入的map类型redis
redisHelp.setKey("字段名称","map数据",过期时间(s),redisTemplate);
redis的基本操作,主要用来用户登录状态,邮箱验证码过期时间,和数据列表缓存,还有更复杂的反正小项目也用不上。
Springboot使用使用对象存储(COS和OSS)和文件上传
1.以腾讯云的cos和阿里云的oss为例,在pom.xml加入
<!--腾讯云存储依赖-->
<dependency>
<groupId>com.qcloud</groupId>
<artifactId>cos_api</artifactId>
<version>5.6.65</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<artifactId>jackson-databind</artifactId>
<groupId>com.fasterxml.jackson.core</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.10.8</version>
</dependency>
<!--阿里云存储依赖-->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.10.2</version>
</dependency>
这里可能要问,怎么腾讯云的这么长,答案是腾讯云的两个组件,其中一个版本太低有安全漏洞,另一个和自带的冲突导致运行报错,所以通过exclusions标签的形式去除,然后又漏洞需要升级的组件,就从外面重新定义设置更新的版本。
2.编辑application.properties,新增如下代码:
#腾讯云
spring.cos.accessKey=
spring.cos.secretKey=
spring.cos.bucket=
spring.cos.bucketName=
spring.cos.path=
spring.cos.prefix=
#阿里云
spring.aliyun.endpoint=
spring.aliyun.accessKeyId=
spring.aliyun.accessKeySecret=
spring.aliyun.bucketName=
spring.aliyun.urlPrefix=
#文件上传限制,单文件和总文件
spring.servlet.multipart.enabled: true
spring.servlet.multipart.max-file-size=20MB
spring.servlet.multipart.max-request-size=100MB
3.用哪个就配置哪个(正常项目根本用不上两个,一般就是二选一,或者干脆本地上传)。然后将我提供的代码,放入web,我这里面写好了cos和oss和本地上传的现成代码。参考着写再丢进去就好了。
点击进入
Springboot请求远程接口
1.把我这个文件解压丢进common
HttpClient.zip
2.调用方式如下:
//定义
HttpClient HttpClient = new HttpClient();
//get请求,返回String
String text = HttpClient.doGet("路径");
//post请求,返回String
String text = HttpClient.doGet("路径","参数");
新手常见问题和坑
1.Springboot配置文件字段application.properties调用,下面这样就行。
2.数据库mapper文件夹中的数据库语句xml怎么调用配置application.properties?首先定义一个这样的字段
mybatis.configuration.variables.字段名称=字段值
xml中这么调用,以我定义的一个prefix为例:
${prefix}
3.项目怎么打包发布?很简单,首先将application.properties复制出来,然后双击下图的package,就可以打包成jar出现在target文件夹。
把jar和application.properties放在一起,丢服务器运行就行,具体参考我给我项目写的安装教程:点击进入
4.Springboot的HttpClient请求对方接收不到参数?这个时候要考虑请求的字符串转义。
String key = "中文字符串";
try {
key = URLEncoder.encode(key,"UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
最后
总之就是,要多改,错的也没事,瞎几把乱敲看能不能跑,先学会做项目,那理论知识其实就在做的过程中都清楚了,而且一边做一边学是学习的最快方式。别看我能在这篇文章扯一大堆,实际上我前前后后从第一次接触到做完整个项目,就花了不到一个月,比培训班都快。诀窍就是瞎几把敲,发现问题了就知道怎么改了,而且过程中肯定会接触到各式各样的问题,解决问题的过程,就是比任何教材和教学视频都学得快的过程。
再次分享下我的项目:https://gitee.com/ruletree/RuleApi
我在项目里已经尽可能的实现了springboot入门级别的所有知识点,都可以直接参考直接复制。如果还有其它新的思路,我也会补充到这个文章中。
本文来自投稿,不代表本站立场,如若转载,请注明出处:https://www.ruletree.club/archives/2751/