热部署,就是发现问题,修改代码后立即生效,不需要自己再手动重启服务器
org.springframework.boot
spring-boot-devtools
2.2.6.RELEASE
添加该依赖,重启项目后,点击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,返回对象,然后被接管。
@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
javax.validation
validation-api
2.0.1.Final
org.hibernate.validator
hibernate-validator
6.0.18.Final
@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
启动报提示信息
如密码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,辅助我们测试
@SpringBootTest
@Import({MsgConfig.class})
class SpringbootBeginQuickstartApplicationTests {
@Autowired
private String msg;
@Test
void contextLoads() {
System.out.println(msg);
}
}