SpringBoot02-application配置文件

Spring Boot 的配置文件主要用于配置项目的运行参数和环境变量,常用的有 application.propertiesapplication.yml(或 application.yaml两种格式


一、配置文件的作用

配置文件可以用于配置:

类型举例
应用基本信息应用名、端口号、环境等
数据库数据库连接信息
日志日志级别、路径
缓存Redis、EhCache
消息队列Kafka、RabbitMQ
安全配置登录认证、权限
自定义参数可以被 @Value@ConfigurationProperties 读取

二、文件格式

Spring Boot 支持两种配置格式:

配置项的内容一致,只是格式不一样!推荐使用yml的格式!

2-1. application.properties 示例

# 服务器端口
server.port=8081

# 应用名
spring.application.name=myapp

# 数据库连接
spring.datasource.url=jdbc:mysql://localhost:3306/testdb
spring.datasource.username=root
spring.datasource.password=123456

# 日志级别
logging.level.com.example.demo=DEBUG

2-2. application.yml/application.yaml 示例(推荐使用,可读性更强)

server:
  port: 8081

spring:
  application:
    name: myapp
  datasource:
    url: jdbc:mysql://localhost:3306/testdb
    username: root
    password: 123456

logging:
  level:
    com.example.demo: DEBUG

2-3、配置文件的内容 

配置文件的具体内容是可以在springboot的官网搜索到的:

https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html

注意:

不是所有的properties都能写的!properties是和你当前项目用到的技术有关的!

2-4、yaml配置文件,没有提示

这是因为idea不认为yaml后缀的文件是一个配置文件。


三、配置文件的位置(优先级)

若是三种配置文件同时存在:(.properties, .yml, .ymal)

优先级是:.properties > .yml > .ymal

而且这三种配置文件的内容,共存叠加,相同覆盖(根据优先级)

Spring Boot 会自动加载以下位置的配置文件,优先级从高到低

  1. 命令行参数(例如 --server.port=8088

  2. application.propertiesapplication.yml (放在 src/main/resources 目录下)

  3. 外部配置(例如通过 -Dspring.config.location=xxx 指定)


四、多环境配置(Profile)

你可以为不同环境配置不同的文件,例如:

  • application-dev.yml

  • application-test.yml

  • application-prod.yml

主配置文件中指定当前环境:

spring:
  profiles:
    active: dev

Spring Boot 会自动加载 application-dev.yml 的配置。


五、读取配置的方式

1. 使用 @Value

@Value("${server.port}")
private int port;

2. 使用 @ConfigurationProperties(适合绑定一组配置)

my:
  app:
    name: hello
    version: 1.0
@Component
@ConfigurationProperties(prefix = "my.app")
public class AppConfig {
    private String name;
    private String version;
    // getters and setters
}

六、自定义配置和获取

你也可以在配置文件中添加自定义属性,例如:

custom:
  greeting: "Hello, Spring Boot!"

【注意】:

1、值前面要有空格! 

2、相同层级,左对齐。

3、大小写敏感

6-1、数组或列表(List)的配置

1、YAML 格式中的数组设置

(1)、常用方式:使用 - 符号列出元素

(2)、另一种方式:用逗号分隔字符串(效果同上)

2、Properties 格式中的数组设置

逗号分隔值(最常见方式)

my.servers=192.168.0.1,192.168.0.2,192.168.0.3

6-2、配置信息的获取

1、通过 @Value("${键名}")获取:

读取数组:

yml配置文件中的值相互引用${属性名}

特殊字符转义:用双引号报告,才会转义

【@Value获取配置信息的缺点】:

        若是成员变量很多,每个都要加@Value会很麻烦。

2、@ConfigurationProperties(prefix = "前缀") 读取

将一组数据,封装为一个对象!这个对象要被spring识别,要加上@Component注解!

【注意】:

        1、要让创建的对象被spring识别,要加上@Component

        2、application.yml / application.properties文件中的信息被修改了,并不需要重新打包、部署项目代码!

3、Environment对象


七、总结

功能推荐方式
单个配置读取@Value
一组配置读取@ConfigurationProperties
多环境切换使用 spring.profiles.active
可读性建议使用 application.yml

八、springboot整合mybatis

8-1、回顾spring整合mybatis

8-2、springboot整合mybatis

1、添加mybatis的起步依赖 + 数据库驱动依赖:

添加了mybatis的起步依赖之后,mybatis以及相关的bean会被自动添加进项目中。

项目中用到了这个父类:

这就意味着:你自动继承了 Spring Boot 官方提供的一个 版本管理中心,里面已经定义好了大量常用依赖的版本。(具体定义了哪些依赖,可以通过git上的查询到!)

Spring Boot 使用的是 Maven 的 dependencyManagement 机制,这机制允许你:

不用显式写 <version>,只写 <groupId><artifactId>,Maven 会自动使用父类定义的版本。

mysql-connector-j 可以不写版本,因为 Spring Boot 官方已经在 spring-boot-dependencies管理了这个依赖的版本,你可以省略 version,Maven 会自动用 Spring Boot 推荐的版本(比如 8.0.33)。

mybatis-spring-boot-starter 必须手动写版本?

这就不一定了

  • 如果你用的是 Spring Boot 2.x,通常不会自动管理 mybatis-spring-boot-starter

  • 但 Spring Boot 3.x(如你写的 3.1.2)是有管理的

2、在配置文件 application.yml中编写数据库相关信息。

8-3、编写业务代码

1、编写pojo类:

2、编写mapper接口

3、编写service接口是实现类

4、编写controller类

九、springboot整合junit

9-1、一般步骤

创建一个springboot project,默认就是导入了test依赖的:

这是因为,springboot是maven项目,maven项目是一定要执行测试操作的!

【注意】:

主要的核心类就是:@SpringBootTest,加上这个注解,这个类就是一个测试类!

9-2、测试类和引导类的位置关系

        在 Spring Boot 中,测试类和引导类(@SpringBootApplication 主类)的位置关系,直接影响到 Spring 容器能否正常加载并注入依赖。 

建议测试类与引导类在同一个包或其子包,否则你必须手动指定扫描路径或配置上下文。

包名要对得上!

解决方法:手动指定引导类 

十、springboot整合mybatis-plus

步骤一:使用springboot的框架,创建一个module

步骤二:添加mybatis-plus的依赖

步骤三:配置数据库相关属性

步骤四:编写dao接口,继承basemapper

【注意】:此时运行测试程序会报错:

Invalid value type for attribute 'factoryBeanObjectType': java.lang.String

问题原因 : 更新的spring更改了factoryBean方法,导致老版本的mybatis不能兼容,   所以最新的mybatis3.0.3修复了这个问题, 然而mybatisplus中还未更新

解决方案 : 排除mybatilsplus自带的mybatils-spring,重新引入

十一、springboot整合druid

或者:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值