动力节点-王妈妈Springboot教程(二)Spring boot快速入门

第二章 Spring boot快速入门

官方下载地址

动力节点springboot资料

视频观看地址

https://www.bilibili.com/video/BV1XQ4y1m7ex

1. 第一种方式:https://start.spring.io

使用 spring boot提供的初始化器。  向导的方式,完成 spring boot 项目的创建:  使用

方便。

1.1 创建项目步骤

step 1: 新建项目

step4:最后创建项目,设置项目的目录位置

step5:SpringBoot项目目录结构

1.2 起步依赖

2. 第二种方式, 使用 springboot 提供的初始化器,  使用的国内的地址

国内地址:  https://start.springboot.io

创建项目的步骤同上

3. 第三种方式 使用maven 向导创建项目

创建一个普通 maven 项目

修改项目的目录

添加 Spring Boot 依赖 

 创建启动类:加入@SpringBootApplication 注解

3.1 入门案例

3.2 入门案例分析

3.3 重要注解

@SpringBootApplication :@SpringBootApplication是一个复合注解,是由@SpringBootConfiguration,@EnableAutoConfiguration,@ComponentScan联合在一起组成的。

@SpringBootConfiguration:就是@Configuration这个注解的功能,使用@SpringBootConfiguration这个注解的类就是配置文件的作用。

@EnableAutoConfiguration:开启自动配置,把一些对象加入到spring容器中。

@ComponentScan:组件扫描器,  扫描注解,根据注解的功能,创建 java bean,给属性赋值 等等。组件扫描器默认扫描的是 @ComponentScan 注解所在的类,  类所在的包和子包。

4. Spring Boot 核心配置文件

Spring Boot 的核心配置文件用于配置 Spring Boot 程序,名字必须以 application 开始

4.1 .properties 文件(默认采用该文件)

在 002-springboot-springmvc 项目基础上,进行修改

项目名称: 003-springboot-port-context-path

通过修改 application.properties 配置文件, 在修改默认 tomcat 端口号及项目上下文件根 键值对的 properties 属性文件配置方式

启动应用,  在浏览器访问http://localhost:9092/boot/

4.2 .yml 文件

项目名称: 005-springboot-yml,在之前项目基础之上

yml 是一种 yaml 格式的配置文件,主要采用一定的空格、换行等格式排版进行配置。  yaml 是一种直观的能够被计算机识别的的数据序列化格式,容易被人类阅读, yaml 类  似于 xml,但是语法比 xml 简洁很多,值与前面的冒号配置项必须要有一个空格,  yml 缀也可以使用 yaml 后缀

注意 : 当两种格式配置文件同时存在 ,在 SpringBoot2.4 开始,  使用的是yml 配置文件.

修改配置名称都为 application。

重新运行 Application ,查看启动的端口及上下文根

推荐使用yml格式配置文件

4.3 多环境配置

在实际开发的过程中,我们的项目会经历很多的阶段(开发->测试->上线),每个阶段

的配置也会不同,例如:端口、上下文根、数据库等,那么这个时候为了方便在不同的环境 之间切换, SpringBoot 提供了多环境配置,具体步骤如下

项目名称: 006-springboot-multi-environment

为每个环境创建一个配置文件,命名必须以 application-环境标识.properties|yml

application.properties

application-dev.properties 

application-product.properties 

 application-test.properties

4.4 Spring Boot 自定义配置

SpringBoot 的核心配置文件中,除了使用内置的配置项之外,我们还可以在自定义配 置,然后采用如下注解去读取配置的属性值

4.4.1 @Value 注解

@Value("${key}"),key来自application.properties(yml)

application.properties:添加两个自定义配置项school.name和

school.website。在IDEA中可以看到这两个属性不能被SpringBoot识别,背景是桔色的

读取配置文件数据 

@RequestMapping("/hello")@ResponseBodypublicStringdoHello(){return"hello, port:"+ port +"学校: "+name+",网站: "+site ;}}

启动应用 Application , 访问浏览器

4.4.2 @ConfigurationProperties

项目名称: 008-springboot-custom-configuration

将整个文件映射成一个对象,用于自定义配置项比较多的情况

案例演示

在 com.bjpowernode.springboot.config 包下创建 SchoolInfo 类,并为该 类加上  Component 和 ConfigurationProperties 注解, prefix 可以不指定,如果不指定,那么 会去配置文件中寻找与该类的属性名一致的配置, prefix 的作用可以区分同名配置

创建 SchoolController 

执行 Application , 访问浏览器查看数据

4.4.3 警告解决

➢ 在 SchoolInfo 类中使用了 ConfigurationProperties 注解,IDEA 会出现一个警告,不影响程序的执行

➢ 点击 open documentnation 跳转到网页, 在网页中提示需要加一个依赖,我们将这个依赖拷贝,粘贴到pom.xml文件中

<!--解决使用@ConfigurationProperties 注解出现警告问题-->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-configuration-processor</artifactId>

<optional>true</optional>

</dependency>

4.4.4 中文乱码

如果在 SpringBoot 核心配置文件中有中文信息,会出现乱码:

◼ 一般在配置文件中, 不建议出现中文(注释除外)

◼ 如果有,可以先转化为 ASCII 码

4.4.5 提示

大家如果是从其它地方拷贝的配置文件, 一定要将里面的空格删干净

5. Spring Boot 中使用 JSP

5.1 在pom.xml 文件中配置以下依赖项

5.2 在 pom.xml 的 build 标签中要配置以下信息

SpringBoot 要求 jsp 文件必须编译到指定的 META-INF/resources 目录下才能访问,否则

访问不到。其实官方已经更建议使用模板技术(后面会讲模板技术)

<!—

SpringBoot 要求 jsp 文件必须编译到指定的      META-INF/resources 目录下才能访问, 否则访问不到。

其它官方已经建议使用模版技术(后面会课程会单独讲解模版技

术)

-->

<resources>

<resource>

<!--源文件位置-->

<directory>src/main/webapp</directory>

<!--指定编译到META-INF/resource,该目录不能随便写--> <targetPath>META-INF/resources</targetPath>

<!--指定要把哪些文件编译进去, **表示webapp 目录及子

目录, *.*表示所有文件-->

<includes>

<include>**/*.*</include>

</includes>

</resource>

</resources>

5.3 在 application.properties 文件配置 Spring MVC 的视图展示为jsp, 这里相当于 Spring MVC 的配置

#配置 SpringMVC 的视图解析器

#其中: /相当于 src/main/webapp 目录

spring.mvc.view.prefix=/

spring.mvc.view.suffix=.jsp

集成完毕之后,剩下的步骤和我们使用 Spring MVC 一样

5.4 在  com.bjpowernode.springboot.controller 包下创建JspController 类, 并编写代码

@Controller

public class SpringBootController {

@RequestMapping(value = "/springBoot/jsp")

public String jsp(Model model) {

model.addAttribute("data","SpringBoot 前端使用 JSP

页面! ");

return "index" ;

}

}

5.5 在 src/main 下创建一个 webapp 目录, 然后在该目录下新建index.jsp 页面

如果在webapp 目录下右键,没有创建 jsp 的选项,可以在Project Structure 中指定webapp 为 Web Resource Directory

5.6 在 jsp 中获取 Controller 传递过来的数据

5.7 重新运行 Application, 通过浏览器访问测试

6. Spring Boot 中使用 ApplicationContext

在 main 方法中 SpringApplication.run()方法获取返回的 Spring 容器对象, 再获取业务 bean 进行调用.

创建 Spring Boot 项目: 010-springboot-container

指定项目的 gav 和版本等信息

选择依赖:

创建一个接口 UserService 和他的实现类

创建启动类,   main 方法中获取容器对象

7. CommandLineRunner 接口

开发中可能会有这样的情景。需要在容器启动后执行一些内容。比如读取配置文件,数   据库连接之类的。 SpringBoot 给我们提供了两个接口来帮助我们实现这种需求。这两个接口  分别为 CommandLineRunner 和 ApplicationRunner。他们的执行时机为容器启动完成的时候。

这两个接口中有一个 run 方法,我们只需要实现这个方法即可。这两个接口的不同之处

在 于 : ApplicationRunner  中  run 方 法 的 参 数 为  ApplicationArguments , 而 CommandLineRunner

接口中 run 方法的参数为 String 数组

创建 Spring Boot 项目,不用选依赖,或者修改 010-springboot-container

创建 SomeService 接口和实现类,定义 sayHello()方法

 实现 CommandLineRunner 接口

 运行主类,查看输出结果

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,258评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,335评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,225评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,126评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,140评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,098评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,018评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,857评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,298评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,518评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,400评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,993评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,638评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,661评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容