Springboot_开发实用篇_数据相关(绑定、格式、校验)

开发实用篇

本文根据黑马最新springboot而写

热部署

手动启动热部署

1.开启热部署
手动启动热部署

		<!--手动启动热部署-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>

2.build project
在这里插入图片描述
关于热部署
在这里插入图片描述
热部署只有restart这个过程,而没有reload这个过程

自动热部署

在这里插入图片描述
第二步:
在这里插入图片描述

热部署范围

范围

在这里插入图片描述

手动设置排除项

手动配置哪些不需要热部署

devtools:
    restart:
      exclude: static/**,public/**,config/application.yml

@ConfigurationProperties来做Bean的属性绑定

  • 回顾之前yml文件的读取
    • @Value()
      在这里插入图片描述

    • Environment对象封装全部信息
      在这里插入图片描述

    • 使用@ConfigurationProperties的prefix使用自定义对象封装指定数据
      在这里插入图片描述
      注意封装类需要定义为spring管理的bean

自己开发的组件绑定属性

在这里插入图片描述
写一个类,让其属性使用配置文件读取

@Component
@Data
@ConfigurationProperties(prefix = "servers")
public class ipConfig {
    private String ipAddress;
    private int port;
    private long timeOut; 
}

prefix 写属性文件中对应属性的上一级名称。

  • 属性文件
servers:
  ipAddress: 192.168.0.1
  port: 2345
  timeOut: -1
  • 测试
@SpringBootApplication
public class Springboot312ConfigurationApplication {
    public static void main(String[] args) {
        ConfigurableApplicationContext ctx = SpringApplication.run(Springboot312ConfigurationApplication.class, args);
        ipConfig bean = ctx.getBean(ipConfig.class);
        System.out.println(bean);
    }
}

在这里插入图片描述

第三方bean绑定属性

上面的bean是自定义的,如果说yml文件想要使用第三方bean加载怎么办呢?
比如说Druid,想要使用yml读取配置信息
在这里插入图片描述
还在启动类中写下如下代码来模拟第三方bean

	@Bean
    @ConfigurationProperties(prefix = "datasource")
    public DruidDataSource dataSource(){
        DruidDataSource ds = new DruidDataSource();
        return ds;
    }

测试:

		DruidDataSource da = ctx.getBean(DruidDataSource.class);
        System.out.println(da.getDriverClassName());

在这里插入图片描述

@EnableConfigurationProperties

启动类写==@EnableConfigurationProperties==({…写想要配置@ConfigurationProperties的类名.class…}),会自动将这个class定义为bean(相当于在对应类上使用==@Componet==),所以对应的类无需写@Componet这个注解了。
在这里插入图片描述

宽松绑定

使用@ConfigurationProperties要求yml实际上是可以写的比较随便的,比如我上面写的是driver-class-name.程序写的是driverClassName,这是因为格式要求比较宽松。有下面这些:
在这里插入图片描述
甚至于 _、-、大小写 随便加都行。主流格式是使用中划线(烤肉串模式)、或者驼峰、或者常量
在这里插入图片描述
注意
在这里插入图片描述
在这里插入图片描述

数据问题

时间/容量 单位问题

在这里插入图片描述
long本身描述时间的单位是毫秒,JDK8之后出的一个描述时间的类型Duration,基本单位也是毫秒
可以使用springboot的@DurationUnit注解来规定这个单位
在这里插入图片描述
同时还有一个注解@DataSizeUnit规定数据大小的单位
在这里插入图片描述
当然也可以不用注解,直接写单位的方式配置

在这里插入图片描述

bean数据格式校验

  1. 加validation校验依赖(JSR303规范)
    这个本质上是一组接口
<!-- https://mvnrepository.com/artifact/jakarta.validation/jakarta.validation-api -->
<!-- https://mvnrepository.com/artifact/javax.validation/validation-api -->
<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>2.0.1.Final</version>
</dependency>

运行报错,因为规范没实现,引入herbernate的校验器

		<dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>5.4.1.Final</version>
        </dependency>
  1. 开启校验==@Validated==

  2. 定义具体校验规则(Max…等注解)

在这里插入图片描述

Bean的作用域问题

默认使用web容器管理的bean是单例的,如果想要非单例,需要使用注解@Scop(“prototype”),这样的话。每次getbean都实例化一个。

关于通过容器管理的优势问题,比如说AlphaDao之前的项目有mybatis实现(使用了@Repository),后来有了新的xxx方案实现比较好(使用了@Repository),但是通过getBean分不清怎么办,在想用的实现类上加上@Primary即可。

密码连不上问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值