SpringBoot-1-入门

1 基础使用

1.1 HelloWorld

基于SprinBoot2由浏览器发送hello请求,后台响应

1,新建maven工程,引入必要依赖

	<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.4.RELEASE</version>
    </parent>

	<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

2,编码
首先需创建SpringBoot的启动类,使用@SpringBootApplication注解
请添加图片描述
接着创建Controller,使用@RequestMapping接收浏览器的url
@RestController注解意为使用@Controller+@RequestBody
请添加图片描述
3,启动SB的main程序,访问浏览器
请添加图片描述
注意第一次启动时,访问浏览器可能遇到404的情况
如代码无问题,可以检查包结构,注意SpringBoot的启动类的位置
可以参考该文章:springboot访问请求404解决方法

使用SpringBoot能极大简化开发流程,省略了很多配置,提高效率
甚至忽略tomcat,直接启动main方法即可,SpringBoot内嵌了tomcat
SpringBoot可以忽略很多配置,各种特性可以由一个文件来配置
在resource文件夹下创建application.properties来完成
请添加图片描述
通过properties文件来配置web,端口,数据库访问…

1.2 依赖管理&自动配置

1.2.1 依赖管理

在helloworld示例中,pom内只增加了两部分就能启动应用
请添加图片描述parent用于依赖管理,声明了常用jar的版本,如jackson,logback,mysql驱动等请添加图片描述
如需要更换版本号,在pom中增加properties属性即可:

	<properties>
        <mysql.version>5.1.43</mysql.version>
    </properties>

starter场景启动器,这个场景的常规需要的依赖都会自动引入
请添加图片描述

1.2.2 自动配置

SpringBoot可以自动配置所需的框架及容器
如SpringMVC通过web场景启动器引入后,会自动配置好常用组件
请添加图片描述
无需创建xml来配置servlet等,可以通过SpringBootApplication返回的IOC容器
查看已配置好的相关组件,如DispatcherServlet,包括字符编码组件等…
请添加图片描述
且无需包扫描配置,主程序所在的包及子包下都能被自动扫描
各种配置均有默认值(如tomcat端口8080),可以按需加载配置

2 关于注册Bean的注解

2.1 @Configuration与@Bean

在SSM项目中,如需注册使用实例,需要编写bean.xml完成注册
但在SpringBoot中,可以直接编码完成,通过极少的注解来注册实例

1,首先需要创建实例类请添加图片描述
2,创建配置类,通过@Configuration声明这是一个配置类
并在返回实例的方法上增加@Bean注解以注册到容器中,默认单例
请添加图片描述
3,从容器中获取并使用实例
请添加图片描述
注意在上述第二个过程中,使用的注解@Configuration有默认值proxyBeanMethods
默认为true,即可以被代理,当我们使用注解默认值并直接从MyConfig中获取对象时:
请添加图片描述
可以看到调用MyConfig同一个方法,经过两次return new但返回了相同的对象
其原因在于通过@Configuration注解修饰后的MyConfig类已被增强,是一个代理对象
SpringBoot总会检查user01是否存在,有则取,无则创建,保持单例

但如果将proxyBeanMethods设置为false,每次从容器中获取实例时就不会检查,以提高效率此时从容器中取出的对象仍然是单例的,但从MyConfig中获取的对象就不是同一个请添加图片描述
proxyBeanMethods的值true或false对应两种模式Full和Lite
配置类中实例无依赖关系,可以使用Lite模式加速容器启动过程,减少判断
配置类中实例存在依赖关系,使用Full模式

2.2 @Import、@Conditional、@ImportResource、@ConfigurationProperties

2.2.1 @Import

也可以通过@Import注解,向容器中导入自己的Bean实例或第三方实例
给容器中自动创建Import类型的无参对象
请添加图片描述
在容器中可以找到Import的无参实例Pet请添加图片描述

2.2.2 @Conditional

@Conditional注解用于条件装配,即满足@Conditional的条件,则进行注入
@Conditional有多个实现,如@ConditionalOnBean(name = "xxx’)意味当容器中存在名为
xxx的实例时,才注册该实例
请添加图片描述
示例中如果想要注册user01,那么user01需要的petA必须存在于容器中,否则不能注册
请添加图片描述

2.2.3 @ImportResource

虽然SpringBoot提供的Bean注解能够替代原先的xml配置
但某些场景为了兼容还是需要原先xml中配置好的Bean,由于迁移这些Bean过于麻烦
SpringBoot提供的@ImportResource注解可以直接使用原先的xml配置文件

如现有的beans.xml配置好了Bean
请添加图片描述
可以通过@ImportResource来解析该xml并注册实例
请添加图片描述
可以成功在容器中获取xml中配置的Bean
请添加图片描述

2.2.4 @ConfigurationProperties

使用SSM开发时,经常需要创建properties文件规定一些配置
由java代码读取并解析,如数据库连接需要password、port等
这个过程如果使用原生Java来处理需要涉及流处理

但在SpringBoot中只需使用@ConfigurationProperties即可快速完成
如新建实例Car,使用@component注解将其作为组件加入容器
并使用@ConfigurationProperties注解指明key前缀
请添加图片描述
将配置以KV的形式写在application.properties中
请添加图片描述
访问url,正确得到配置好的bean
请添加图片描述

SpringBoot的配置小结:

1,SpringBoot启动前会先加载所有的自动配置类
2,每个自动配置类按照条件选择性生效,默认绑定配置文件(如ServerProperties)指定的值
3,生效的配置类会给容器中增加许多实例
4,只要容器中有这些注册好的实例,相当于这些功能可以直接使用
5,只要有用户自己配置的,以用户配置的优先,用户直接@Bean替换默认实例或修改配置文件(application.properties)

配置流程:

1,引入场景依赖
2,查看自动配置了哪些
3,结合业务是否需要修改

3 实用工具

3.1 Lombok

简化业务对象开发,省略构造器,get/set方法…
根据注解要求会在编译时生成构造方法等
需要引入依赖,并在IDEA中下载Lombok插件

	<dependency>
	     <groupId>org.projectlombok</groupId>
	     <artifactId>lombok</artifactId>
    </dependency>
SpringBoot已经声明了版本

请添加图片描述
还可以使用Lombok中的@Slf4j作为日志功能
请添加图片描述

3.2 Developer-Tools

开发中经常需要修改代码或配置,但每次修改完后都需要重新启动
为此可以使用Developer-Tools,引入依赖:

      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-devtools</artifactId>
          <optional>true</optional>
      </dependency>

每次修改后 使用快捷键ctrl+f9实现更新
但本质还是重新启动,真正实现热部署需要使用Jrebel等收费功能
Developer-Tools还有其他功能…

3.3 Spring Initializr

通过Spring Initializr更快的构建SpringBoot工程
IDEA中选择Spring Initializr
请添加图片描述
确定包名及JDK版本号
请添加图片描述
选择使用的场景及SpringBoot版本
请添加图片描述
会自动创建好项目结构并下载场景所需依赖请添加图片描述

4 yaml配置文件

4.1 yaml使用

yaml上一种标记语言,用法类似properties,非常适合用于以数据为中心的配置文件

yaml基本语法:

1,以KV形式表达 key: value kv之间有空格
2,大小写敏感,使用缩进表示层级关系,缩进的空格数无所谓,只需相同元素左对齐即可
3,# 表示注释,字符串无需加引号,但''""都表示字符串内容,但前者会被转义,后者不会被转义

yaml的数据类型:

1,字面量 data、boolean、string、number、null
k: v

2,对象 map、hash、set、bject
k: {k1: v1, k2: v2, k3: v3} 
或
k: 
	k1: v1
	k2: v2
	k3: v3

3,数组 array、list、queue
k: [v1, v2, v3]
或
k:
	- v1
	- v2
	- v3

使用yaml表示一个Person类实例:

public class Person {

    private String name;
    private Integer age;
    private Date birth;
    private List<Pet> pets;
    private Map<String, Object> score;
    
}
public class Pet {

    private String name;
    private Integer age;

}

对应yaml配置
person:
  name: zhangsan
  sex: true
  age: 18
  birth: 2000/12/19
  pets:
    name: caka
    age: 7
  score:
    english: 80
    math: 90

4.2 yaml文件自动提示

第一次使用yaml时,会发现没有提示,不像application.properties文件一样便捷
为此可以引入依赖

	<dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-configuration-processor</artifactId>
          <optional>true</optional>
      </dependency>

重新启动后,yaml编写即可出现提示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值