构建第一个SpringBoot Project ╰+攻爆jí腚メ 2021-10-19 01:32 356阅读 0赞 #### 一、SpringBoot简介 #### **1. 原有Spring优缺点分析** Spring的优点: Spring是Java企业版(Java Enterprise Edition)的轻量级代替品,无需开发重量级的Enterprise JavaBean(EJB),Spring为企业级Java开发提供了一种相对简单的方法,通过依赖注入和面向切面编程,用简单的Java对象(Plain Old Java Object)实现了EJB的功能; Spring的缺点: 虽然Spring的组件代码是轻量级的,但它的配置却是重量级的。一开始,Spring用XML配置,而且是很多XML配置。Spring 2.5引入了基于注解的组件扫描,这消除了大量针对应用程序自身组件的显式XML配置。Spring 3.0引入了基于Java的配置,这是一种类型安全的可重构配置方式,可以代替XML。 所有这些配置都代表了开发时的损耗,因为在思考Spring特性配置和解决业务问题之间需要进行思维切换,所以编写配置挤占了编写应用程序逻辑的时间。和所有框架一样,Spring实用,但与此同时它要求的回报也不少。除此之外,项目的依赖管理也是一件耗时耗力的事情。在环境搭建时,需要分析要导入哪些库的坐标,而且还需要分析导入与之有依赖关系的其他库的坐标,一旦选错了依赖的版本,随之而来的不兼容问题就会严重阻碍项目的开发进度。 **2. SpringBoot的概述** [SpringBoot][]对上述Spring的缺点进行改善和优化,基于`约定优于配置`的思想,可以让开发人员不必在配置与逻辑业务之间进行思维的切换,全身心的投入到逻辑业务的代码编写中,从而大大提高了开发的效率,一定程度上缩短了项目周期。 **3. SpringBoot的特点** * SpringBoot不是对Spring功能上的增强,而是提供了一种快速使用Spring的方式; * 开箱即用,没有代码生成,也无需XML配置,同时也可修改默认值来满足特定的需求; * 内嵌Servlet容器,SpringBoot可以内嵌Tomcat,无需以war包的形式部署项目,只需通过`java -jar xx.jar` jar包形式运行,非常方便; * 提供starter简化Maven配置,使用Spring或者SpringMVC我们需要添加大量的依赖,而这些依赖很多都是固定的,这里Spring Boot 通过starter能够帮助我们简化Maven配置。 **4. SpringBoot核心功能** * 起步依赖:起步依赖本质上是一个Maven项目对象模型(POM),定义了对其他库的传递依赖,这些东西加在一起即支持某项功能。简单的说,起步依赖就是将具备某种功能的坐标打包到一起,并提供一些默认的功能。 * 自动配置:Spring Boot的自动配置是一个运行时(更准确地说,是应用程序启动时)的过程,考虑了众多因素,才决定Spring配置应该用哪个,不该用哪个,该过程是Spring自动完成的。 补充:[SpringBoot和SSM开发中有什么区别?][SpringBoot_SSM] #### 二、创建SpringBoot Demo #### **1. `new Project -> Spring Initializr`** ![01idea创建springboot][01idea_springboot] **2. 填写`Group、Artifact`** ![02idea创建springboot][02idea_springboot] **3. 选择`Web -> Spring Web Starter`** ![03idea创建springboot][03idea_springboot] **4. Springboot Demo目录结构** ![Springboot Demo目录结构][Springboot Demo] **5. Springboot Demo启动控制台输出** ![Springboot项目启动][Springboot] **6. SpringBoot 引导类** ![SpringBoot 引导类][SpringBoot 1] **7. SpringBoot pom.xml文件** ![SpringBoot pom.xml文件][SpringBoot pom.xml] **8. 小结** ![小结][aHR0cHM6Ly9xaW5pdS53Znh1bmkuY29tL3NwcmluZ2Jvb3QvU3ByaW5nQm9vdCVFNSU4NSVBNSVFOSU5NyVBOCVFNiU4MCVCQiVFNyVCQiU5My5wbmc] #### 三、SpringBoot的配置文件 #### **1. SpringBoot配置文件类型** SpringBoot是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认配置的话,就可以使用`application.properties`或者`application.yml(application.yaml)`进行配置。SpringBoot默认会从Resources目录下加载配置文件,其中`application.properties`文件是键值对类型的文件,下面介绍`application.yml`。 **2. yml配置文件简介** YML文件格式是`YAML (YAML Aint Markup Language)`编写的文件格式,YAML是一种直观的能够被电脑识别的的数据序列化格式,并且容易被人类阅读,容易和脚本语言交互,可以被支持YAML库的不同的编程语言程序导入,比如: `C/C++,Ruby,Python,Java,Perl,C#,PHP`等。YML文件是以数据为核心的,比传统的xml方式更加简洁,YML文件的扩展名可以使用`.yml/.yaml`。 #### 四、yml配置文件的语法 #### **1. 配置普通数据** * 语法:`key: value` * 示例代码:`name: zhazha` 注意:value之前有一个空格。 **2. 配置对象数据** 语法: key: key1: value1 key2: value2 或者: key: { key1: value1,key2: value2} 示例代码: person: name: feifei age: 18 addr: guangzhou #或者 person: { name: feifei,age: 18,addr: guangzhou} 注意:key1前面的空格个数不限定,在yml语法中,相同缩进代表同一个级别。 **3. 配置Map数据** 同上面的对象写法 语法: #map配置 map: key1: value1 key2: value2 **4. 配置数组(List、Set)数据** 语法: key: - value1 - value2 或者: key: [value1,value2] 示例代码: city: - beijing - shanghai - guagnzhou #或者 city: [beijing,shanghai,guangzhou] #集合中的元素是对象形式 student: - name: zhangsan age: 18 score: 100 - name: lisi age: 28 score: 88 - name: wangwu age: 38 score: 90 注意:value与 - 之间存在一个空格。 **5. SpringBoot配置信息的查询** 上面提及过,SpringBoot的配置文件,主要的目的就是对配置信息进行修改的,但在配置时的key从哪里去查询呢?我们可以查阅[SpringBoot的官方文档][SpringBoot 2] 比如修改默认端口为8888: application.properties: server.port=8888 server.servlet.context-path=demo application.yml: server: port: 8888 servlet: context-path: /demo #### 五、配置文件与配置类的属性映射方式 #### 配置文件代码: application.properties: person.name=zhangsan person.age=18 application.yml: person: name: zhangsan age: 18 **1. 使用注解@Value映射** 通过`@Value`注解可以将配置文件中的值映射到一个Spring管理的Bean的字段上 实体Bean代码如下: @Controller public class QuickStartController { @Value("${person.name}") private String name; @Value("${person.age}") private Integer age; @RequestMapping("/quick") @ResponseBody public String quick(){ return "Springboot访问成功! name:"+name+",age:"+age; } } 浏览器访问地址:`http://localhost:8080/quick` 结果如下: ![Springboot访问成功结果][Springboot 1] **2. 使用注解@ConfigurationProperties映射** 通过注解`@ConfigurationProperties(prefix="配置文件中的key的前缀")`可以将配置文件中的配置自动与实体进行映射 实体Bean代码如下: @Controller @ConfigurationProperties(prefix = "person") public class QuickStartController { private String name; private Integer age; @RequestMapping("/quick") @ResponseBody public String quick(){ return "springboot 访问成功! name="+name+",age="+age; } public void setName(String name) { this.name = name; } public void setAge(Integer age) { this.age = age; } } 浏览器访问地址:`http://localhost:8080/quick`,结果如下: ![Springboot访问成功结果][Springboot 1] 注意:使用`@ConfigurationProperties`方式可以进行配置文件与实体字段的自动映射,但需要字段必须提供set方法才可以,而使用`@Value`注解修饰的字段不需要提供set方法。 [SpringBoot]: https://spring.io/projects [SpringBoot_SSM]: https://www.zhihu.com/question/284488830/answer/618290880 [01idea_springboot]: /images/20211018/57bbc9b19c624392a937bf026ab4749c.png [02idea_springboot]: /images/20211018/3cb7633863d44c63be5558555c0b40c3.png [03idea_springboot]: /images/20211018/4c3cce66995e400eb770621ba9be8252.png [Springboot Demo]: /images/20211018/c5c55b37a3b248918469ad3c49c48d93.png [Springboot]: /images/20211018/2ff6edc16558471185697e9393a9a7e4.png [SpringBoot 1]: /images/20211018/49d7deaa534e4a3b888f834ac49edb35.png [SpringBoot pom.xml]: /images/20211018/bb2df6c5f3da4654bab39ebe15ce50c6.png [aHR0cHM6Ly9xaW5pdS53Znh1bmkuY29tL3NwcmluZ2Jvb3QvU3ByaW5nQm9vdCVFNSU4NSVBNSVFOSU5NyVBOCVFNiU4MCVCQiVFNyVCQiU5My5wbmc]: /images/20211018/42685e0f318945c7a0bdcd1581c79642.png [SpringBoot 2]: https://docs.spring.io/spring-boot/docs/2.0.1.RELEASE/reference/htmlsingle/#common-application-properties [Springboot 1]: /images/20211018/3196ae10df554cae8ad189028529aaa5.png
还没有评论,来说两句吧...