![62dce8f3f43f9cbf4f0f8edc29ab87f1.png](https://i-blog.csdnimg.cn/blog_migrate/404bf14167818963bfd5d4c689804634.jpeg)
刘小爱自学Java的第131天。
感谢你的观看。
![b4dd3ab49aa540611614bc233da0959c.png](https://i-blog.csdnimg.cn/blog_migrate/b161d34b8a5c055ba877e3f3b466053f.jpeg)
今日学习内容安排如下:
- 为什么要使用SpringBoot?
- SpringBoot的强大之处。
- 用SpringBoot编写入门程序,学习并使用Java配置的方式。
一、SpringBoot的引入
Java这门编程语言啊,一直存在一个被很多人诟病的问题:代码臃肿、使用麻烦。
当我们还在辛苦的搭建项目环境时,可能Python程序员已经把代码都快写完了。
你还真别信,现在从零开始搭建一个完整的SSM框架项目环境,少说也要二十来分钟。
究其原因主要是两点:
- 复杂的配置:各种xml文件的配置,spring的,mybatis的等等。
- 混乱的依赖管理:这个就更令人头痛了,既要决定项目里要用哪些依赖,又要解决版本冲突的问题。
而SpringBoot就是用来解决这些问题的。
![39b53e96bd3fc2e2c86c23a860c03b59.png](https://i-blog.csdnimg.cn/blog_migrate/2bd75acf2e8b7755529d74ffdbd8ca26.jpeg)
SpringBoot是Spring项目中的一个子工程,Spring大家族中的一员。
boot也就是启动的意思,用SpringBoot创建Java应用会简单快速很多。
SpringBoot主要特点如下:
- 有一个非常快速的入门体验。
- 绝对没有代码生成,也无需 XML 配置。
- 更多高级的应用可以去官方文档查看。
二、SpringBoot快速入门
其中有两种创建方式:一种是手动创建maven工程,一种是使用脚手架自动创建。
这两种方式都非常的简单,我们手动创建:
![739c9ce04fc7db77721ef1f81f0aa256.png](https://i-blog.csdnimg.cn/blog_migrate/dac3cf01b8aa203945e1542861f13e30.jpeg)
①添加父工程坐标
我们以前是自己创建一个父工程,这里是使用springboot自带的父工程:
spring-boot-starter-parent
使用SpringBoot能解决版本冲突问题。
版本冲突可是一个非常恼人的问题,有一些bug死活都找不出原因,可能就是版本冲突。
②引入依赖
父工程只是起到一个版本管理的作用,项目中具体需要使用到哪些依赖还是要引入。
上述例子中都是SpringBoot根据spring-boot-starter-web这个依赖自动引入的,而且所有的版本都已经管理好,不会出现冲突。
![6822121495fa3cc3303779503618e3bb.png](https://i-blog.csdnimg.cn/blog_migrate/b17e2baa10e9cd8e34b002ce617d98a1.jpeg)
③编写启动类
以前要么配置tomcat,要么使用tomcat插件,现在直接在main方法就能启动tomcat。
那需要怎么做呢?
- 使用@SpringBootApplication在类上说明。
- 在main方法中使用SpringApplication.run()。
- 其中参数为当前类的Class对象。
- 启动main方法即可运行SpringBoot。
④编写controller类
@RestController也就相当于@Controller加上@ResponseBody,我们可以看它的源码。
![a2a2ab92dde03d998f4a663f4def4078.png](https://i-blog.csdnimg.cn/blog_migrate/f550bcca2a11585933fa8ca6576bdcab.png)
@ResponseBody作用就是将返回值以JSON数据格式响应给前端。
返回值本来应该是对应一个视图的,比如hello.jsp文件,但是现在普遍都是前后端分离,后端中不需要出现前端代码,所以将响应的数据转换成JSON再响应。
⑤测试
在浏览器上输入对应的访问路径,即可访问到Controller类中的对应方法,页面内容也就是响应的Json数据。
三、Java配置
现在项目中没有任何的xml文件了,那么我们如果要配置一个Bean该怎么办?
1常规Java配置
使用Java配置即可解决这个问题,我们将Java配置和传统的xml配置做一个对比:
![a942f00f97574b57806272da0daf5f4b.png](https://i-blog.csdnimg.cn/blog_migrate/35ccc28ac68d8546158a66c2de0e3214.jpeg)
①编写jdbc配置文件
这不用多说,数据库四大金刚,无论是xml还是Java配置都需要properties配置文件。
②xml配置方式
通过contex:property-placeholder标签引入jdbcp配置文件,再使用${}格式获取。
将德鲁伊数据源配置成spring容器中,同时用property标签完成属性赋值。
③Java配置方式
- @Configurarion表示这是一个配置类。
- @PropertySource表示引入配置文件。
- @Value表示取出配置文件中的值。
- @Bean表示存放到spring容器中。
以上都是见名知意的,知道单词的意思了也就明白其作用了。
2Java配置方式一
![ccf664b3aae54f35d4f9dff3e3a9f437.png](https://i-blog.csdnimg.cn/blog_migrate/5cccdce080a0dda87429af81ddf16382.jpeg)
①application.properties文件
这是SpringBoot默认读取的属性文件名,所以要把jdbc.properties名称改为该名称。
②自动读取
prefix="jdbc"表示读取属性文件中前缀为jdbc的值,所以其四个属性就完成注入了。
该方法就简单了很多,被经常使用,看起来也超级优雅,但是其也有一定的局限性:
配置文件中的属性只能被它一个Bean用
那如何让配置文件中的属性具有通用性呢?
3Java配置方式二
![253152cc2eeac5a1c3998c79635a4ec4.png](https://i-blog.csdnimg.cn/blog_migrate/b54155dddae0dafadaa2e9becdaf4829.jpeg)
①配置一个属性读取类
在类上通过@ConfigurationProperties注解声明当前类为属性读取类。
该类中的成员变量要和配置文件中的属性名一一对应,同时要有getXXX和setXXX方法。
我为了简便就直接使用了lombok插件。
②配置文件中的属性就具有通用性了
任何其它类想使用配置文件中的属性,引入该属性读取类,通过getXXX方法获取即可。
4测试
怎么测试Java配置的属性没有问题呢?
![a38adfa24cbd81a07785d1d33ae3eb7c.png](https://i-blog.csdnimg.cn/blog_migrate/57a7fd509020109f2103ae9f6c834cc2.jpeg)
我们这边可以使用debug打断点的方法,浏览器中输入路径,接受请求后,可以在控制台中查看dataSource中的属性。
如果出现了上图一样的结果,则表示配置文件中的属性被成功读取了。
最后
谢谢你的观看。
如果可以的话,麻烦帮忙点个赞,谢谢你。