SpringBoot开发实用篇

文章介绍了SpringBoot中的热部署机制,通过添加spring-boot-devtools依赖实现修改代码后立即生效,无需手动重启。此外,详述了自动编译设置、@ConfigurationProperties的使用以绑定YML配置,以及数据校验的启用和注解应用。同时提到了YML配置的注意事项和测试时的临时配置加载。
摘要由CSDN通过智能技术生成

热部署

热部署,就是发现问题,修改代码后立即生效,不需要自己再手动重启服务器

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<version>2.2.6.RELEASE</version>
		</dependency>

添加该依赖,重启项目后,点击Build中的Build project即可热部署。或ctrl+f9

重启(Restart):自定义开发代码,包含类、页面、配置文件等,加载位置restart类加载器重载(ReLoad) : jar包,加载位置base类加载器

而热部署仅仅是重启。

自动build

setting中Build中Compiler中选中Build project automatically

java页面中ctrl+alt+shift+/,点击1.registry,勾选compiler.automake.allow.when.app.running

就能自动热部署了:并且是当Idea工具失去焦点5秒后自动进行热部署。

java类中发生变化会参与热部署,核心配置文件也参与热部署,而页面的改变不会参与热部署

详见springboot基础16

配置高级

可对一个类使用@Component同时@ConfigurationProperties(prefix = "datasource")//yml中的属性名。标记一个用于自动装配的类,将yml对应部分的内容装配到该类属性可宽松绑定,驼峰、中划线、下划线、常量均可,需提供set方法,在别的类中@Autowired该类即可。绑定前缀名命名规范:仅能使用纯小写字母、数字、下划线作为合法的字符

或在引导类上加 @EnableConfigurationProperties(MPConfig.class),可在配置类上不用@Component。

但若,加载的bean不是自定义的,而是第三方提供的

可在方法上加@Bean,返回对象,然后被接管。

松散绑定 

@ConfigurationProperties(prefix = "datasource")//yml中的属性名,标记一个用于自动装配的类,将yml对应部分的内容装配到该类属性可宽松绑定,驼峰、中划线、下划线、常量均可,需提供set方法,在别的类中@Autowired该类即可。绑定前缀名命名规范:仅能使用纯小写字母、数字、下划线作为合法的字符

@Value("${userList[0].name}")直接读取yml配置属性,不支持宽松绑定

详见SpringBoot基础认识_阳光明媚UPUP的博客-CSDN博客

的yml定义和读取属性

单位

server:
  port: 81
  serverTimeOut: 3  #单位不明,可能毫秒
  #dataSize: 10 #可不加单位,在自动装配的配置类加上空间单位
  dataSize: 10MB #可加单位
@Data
@Component
@ConfigurationProperties(prefix = "servers")
public class ServerConfig {
    private String port;
    @DurationUnit(ChronoUnit.DAYS)
    private Duration serverTimeOut;//时间单位
    //还有空间单位
    @DataSizeUnit(DataUnit.MEGABYTES)
    private DataSize dataSize;
}

数据校验

开启数据校验有助于系统安全性,J2EE规范中JSR303规范定义了一组有关数据校验相关的API

		<dependency>
			<groupId>javax.validation</groupId>
			<artifactId>validation-api</artifactId>
			<version>2.0.1.Final</version>
		</dependency>
		<dependency>
			<groupId>org.hibernate.validator</groupId>
			<artifactId>hibernate-validator</artifactId>
			<version>6.0.18.Final</version>
		</dependency>
@Data
@Component
@ConfigurationProperties(prefix = "servers")
@Validated//开启数据校验
public class ServerConfig {
    //@Max(value = 8888,message = "最大不能超过8888")
    @Min(value = 202,message = "最小不能低于202")
    private String port;
    @DurationUnit(ChronoUnit.DAYS)
    private Duration serverTimeOut;//时间单位
    //还有空间单位
    @DataSizeUnit(DataUnit.MEGABYTES)
    private DataSize dataSize;
}
server:
  port: 9999

启动报提示信息

yml中的密码如果为全数字可能会转义

如密码0127,用@Values得到的就是87,解决方式加一个引号引起来”0127“即可

测试

临时加配置参数

//@SpringBootTest(properties = {"test.prop=testValue1"})//注解参数的临时属性配置能够覆盖yml
//@SpringBootTest(args = {"--test.prop=testValue2"})//外部临时属性命令行
@SpringBootTest(args = {"--test.prop=testValue2"},properties = {"test.prop=testValue1"})//命令行优先级更高
class SpringbootBeginQuickstartApplicationTests {
    @Value("${test.prop}")
    private String msg;
    @Test
    void contextLoads() {
        System.out.println(msg);
    }
}

临时加载其他的bean

我们想要加一些临时配置,比如临时加载其他的bean,辅助我们测试

@SpringBootTest
@Import({MsgConfig.class})
class SpringbootBeginQuickstartApplicationTests {
    @Autowired
    private String msg;
    @Test
    void contextLoads() {
        System.out.println(msg);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值