springboot学习笔记

本文详细介绍了SpringBoot框架的特点,包括简化部署、配置管理和依赖自动配置,以及其与SpringMVC和SpringCloud的关系,以及如何创建和配置SpringBoot项目,包括使用注解、配置文件和环境切换等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

概述

常见的SSM搭建项目弊端

什么是springboot

特点

1.简化部署

2.简化配置,注解代替xml

3.简化依赖配置

4.应用监控

springboot与springmvc,springcloud关系

创建springboot项目

spring4提供的注解

Spring的发展

Java配置

1.核心注解

@Configuration

@Bean

springboot核心

入口类

@SpringBootApplication注解

@SpringBootApplication的属性

@SpringBootConfiguration

@EnableAutoConfiguration

@ComponentScan

配置文件

全局配置文件

自定义配置值

格式

普通值,如数字,字符串,布尔

对象/map类型,即有键值对

数组,List,Set

嵌套

读取指定配置文件配置的值

@PropertySource(value={"classpath:jdbc.properties"})+@Value

@ConfigurationProperties(perfix="persion")

@ImportResource(classpath:xxxx.xml)

@Import 导入额外的配置信息

根据不同环境使用不同配置文件

优先级

pom启动器依赖包


概述

常见的SSM搭建项目弊端

上手麻烦,很多框架的初学者根本不知道要从何开始搭建一个项目,对初级开发者很不友好

配置繁杂,使用一个框架,或者向项目中集成一个插件,要专门学习配置文件,哪怕是细微的配置错误,也会导致无法使用,而且排查起来特别困难,对初级开发者很不友好

项目需要单独配置容器,编写好的项目还需要自己配置Tomcat运行,又多了一个额外的步骤,一旦配置有问题,又可能要折腾很久,对初级开发者很不友好

什么是springboot

spring组件的一站式快速开发框架,避免了众多繁琐的配置,极大的简化了开发者的学习成本,项目搭建成本,对初级开发者十分友好

特点

1.简化部署

内置tomcat,jetty容器,不再需要开发者打成war包部署到容器中,只要打成一个独立的jar就可以独立运行,所有依赖均在一个jar包中

2.简化配置,注解代替xml

注解代替xml是spring4.x的核心功能,springboot的配置文件只有一个application.yml,开发者不再需要配置一大堆的xml,properties

使用一个第三方框架的配置变得十分简单

3.简化依赖配置

springboot启动器会将一组依赖打包到一起,作为一个启动器,比如spring-boot-starter-web包含了web开发需要的spring-web,springmvc等依赖

4.应用监控

springboot可以监控服务和应用

springboot与springmvc,springcloud关系

1.springboot是spring组件的一站式快速开发框架

2.springmvc是基于spring的mvc框架

3.springboot是springcloud的基础,springcloud是一站式微服务框架

创建springboot项目

1.打开IDEA,创建新项目,选择Spring Initializr,填写路径和项目名,选择maven作为构建工具,选择JDK版本

2.选择初始化项目时要导入的依赖,这里我们因为是简单演示,只选择了spring-web,有需要可以挨个点开看看哪些是可能用到的,可以一并导入,点击确定即创建项目

3.配置SDK和maven,等待maven依赖导入完成即可,到这一步,这个springweb项目就创建完成了,我们完全没有配置什么spring文件,springmvc文件

4.启动项目

点击main方法的启动按钮,或者使用IDEA上面的启动按钮,就可以使用springboot内置的tomcat容器来启动我们的项目,我们完全没有自己手动打包,配置tomcat去运行

5.看看我们的pom文件,有一个web项目启动器

spring-boot-start-parent

封装好了版本号,提供版本控制,导入它以后,导入其他依赖时不再需要配置version

spring-boot-starter-web

springweb核心组件,包含了web项目所需所有核心依赖

原理是maven依赖的子父关系

springboot把需要的一类依赖封装好,导入一个依赖就可以应用

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.1.5</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

点进去会发现包含多个依赖
<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
    <version>3.1.5</version>
    <scope>compile</scope>
  </dependency>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-json</artifactId>
    <version>3.1.5</version>
    <scope>compile</scope>
  </dependency>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <version>3.1.5</version>
    <scope>compile</scope>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>6.0.13</version>
    <scope>compile</scope>
  </dependency>
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>6.0.13</version>
    <scope>compile</scope>
  </dependency>
</dependencies>

spring4提供的注解

Spring的发展

1.Spring1.X完全通过xml配置

2.Spring2.X可以使用注解对Bean进行声明和注入

1.应用的基本配置用xml

2.业务逻辑中的开发用注解,如service中@Autowire

3.Spring3.X开始提供了Java配置方式,可以通过Java代码配置

4.Spring4.X推荐使用Java配置方式

Java配置

Java配置是Spring4.x推荐的配置方式,可以完全替代xml配置

1.核心注解

@Configuration

作用于类上,标记该类是一个配置类,相当于以前的xml配置文件

@Bean

作用于方法上,相当于xml中的,将方法的返回值交由spring容器管理

springboot核心

入口类

@SpringBootApplication注解

Spring Boot的核心注解,是一个复合注解,包含@SpringBootConfiguration,@EnableAutoConfiguration,@ComponentScan三个注解

@SpringBootApplication的属性

scanBasePackages:指定扫描包,通常不指定

exclude:指定不扫描的包,通常不指定

@SpringBootConfiguration

后缀是Configuration,没错,这个注解继承了@Configuration,配置注解

@EnableAutoConfiguration

开启自动配置,该注解会使Spring Boot根据项目中依赖的jar包自动配置所需要的配置项

如:我们添加了spring-boot-starter-web的依赖,项目中也就会引入SpringMVC的依赖,Spring Boot就会自动配置tomcat和SpringMVC

@ComponentScan

容器扫描自动装配,默认扫描该注解所在类的同级目录及子目录,因此通常把启动类放在项目根目录下

可以通过basePackages属性配置扫描的目标包,但通常不会这么做

可以通过excludeFilters属性配置不扫描的包

配置文件

spring配置文件为yml或者properties,通常使用yml

全局配置文件

springboot全局配置文件可以是application.yml或application.properties,默认放在resources目录下,通常是application.yml

相比以往的配置方式,采用树形结构,更符合编码习惯,有上千个配置可供选择

我们不在此处讨论框架的配置,只讨论自定义值的配置

自定义配置值

格式

缩进+冒号后空格

普通值,如数字,字符串,布尔
name: zhangsan
注意:
字符串默认不用加上单引号或者双引号
使用双引号需要考虑转义,单引号不需要考虑转义
"zs\n ls"    zs换行ls
'zs\nls'    zs\nls
对象/map类型,即有键值对
key:
    key: value
    key: value
或者 key:{key: value,key: value}
Person:
    name: zhangsan
    age: 20
数组,List,Set
key:
    - value
    - value
或者key: [value,value]
注意:
用 - 值表示数组中的一个元素

PersonList:
    - zhangsan
    - lisi
嵌套
student:
    -name: zhangsan
     age: 18
    -name: lisi
     age: 17
或者:student: [{name: zhangsan,age: 18},{name: lisi,age: 17}]

读取指定配置文件配置的值

某些时候,我们有可能针对某个类必须要用到单独的配置文件,把配置的值注入到Bean中,此时可以使用@PropertySource+@Value

@PropertySource(value={"classpath:jdbc.properties"})+@Value

1.作用在类上,在该类的范围内,读取指定位置的配置文件

2.springboot默认只会加载application.yml/application.properties

3.配置可以为多个,用逗号隔开

value={"classpath:jdbc.properties","xxx","xxx"}

4.配置文件有可能找不到,设置ignoreResourceNotFound=true,允许配置文件缺失

@PropertySource(value={"classpath:jdbc.properties"}, ignoreResourceNotFound=true)

@Value("${jdbc.url}"),作用在变量上,获取配置项的值给定变量

@PropertySource(value={"jdbc.properties"}, ignoreNotFound=true)
@Value("${jdbc.url}")
private String jdbcUrl;
@Value("${jdbc.driverClassName}")
private String jdbcDriverClassName;
@Value("${jdbc.username}")
private String jdbcUsername;
@Value("${jdbc.password}")
private String jdbcPassword;
@ConfigurationProperties(perfix="persion")

用来简化@PropertySource+@Value

通常作用在配置类上,表示属性自动装配,perfix前缀+该类的属性名,去配置文件中找对应的配置值装配到对应的属性上

注意:

前缀的单个单词首字母不能大写

如果该类的变量上同时使用了@Value,以ConfigurationProperties为准

使用对象中的数据,要在具体的方法中使用,而不能在类中直接使用,涉及依赖注入的顺序

login
    username: zhangsan
    password: 123456

@Configuration
public class loginConfig {
    private String username;
    private String password;
}

@ImportResource(classpath:xxxx.xml)

由于springboot只会加载yml和properties,当某个类下必须读取xml配置,就要使用@ImportResource注解

如果在启动类上使用,就可以读取原本的applicationContext.xml作为项目启动的配置文件

通常不会这么做

@Import 导入额外的配置信息

功能和xml的import一致,其实就是将配置分类,通过不同的配置文件进行配置

根据不同环境使用不同配置文件

开发中,项目运行需要切换不同的环境,开发环境,测试环境,生产环境,对应不同的配置,比如数据库配置,如果只使用一个配置文件,意味着每次启动都要去修改配置文件

默认情况下会加载application.yml

我们可以创建几个新的配置文件,对应不同环境application-dev.yml,application-test.yml,application-prod.yml

application.yml

spring:
  profiles:
    active: dev        //加了这个配置,启动时就会加载application-dev.yml,application-dev.yml不需要做什么额外的配置
优先级

如果没有配置active,则会加载application.yml;如果配置了active,会先加载application.yml,再加载application-dev.yml,相当于配置是覆盖的

或者说,application-dev.yml会全部生效,同时application-dev.yml没有而application.yml有的也会生效

pom启动器依赖包

SpringBoot提供了绝大多数开发场景的starter pom,只要导入就能通过自动配置消除繁琐的配置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值