文章目录
- SpringBoot事务的使用
- Spring Boot 有哪几种读取配置的方式?
- SpringBoot的自动配置原理是什么
- bootstrap.properties 和 application.properties 有何区别 ?
- 什么是 Spring Profiles?
- Spring Boot 中如何解决跨域问题 ?
- SpringBoot性能如何优化
- 实现定时任务
- Spring Boot 如何监控系统实际运行状况?
- SpringBoot 如何做请求参数的校验
SpringBoot事务的使用
● SpringBoot的事务很简单,首先使用注解EnableTransactionManagement开启事物之后,然后在Service方法上添加注解Transactional便可。
Spring Boot 有哪几种读取配置的方式?
● Spring Boot 可以通过 @PropertySource,@Value,@Environment, @ConfigurationPropertie注解来绑定变量
SpringBoot的自动配置原理是什么
核心是启动类中的核心注解@SpringbootAppliction开启之后
@EnableAutoConfiguration会生效。
然后SpringBoot 会根据约定去寻找配置类,注入到容器中。根据注解 @Conditional 动态的加载配置类里面的 Bean 到容器中。
bootstrap.properties 和 application.properties 有何区别 ?
bootstrap 一般在使用Spring Cloud 中使用到这个文件,配置在应用程序上下文的引导阶段生效,且bootstrap里的属性不能被覆盖。
什么是 Spring Profiles?
例如 application-dev.yml,application-prod.yml ,用于区分项目环境。
Spring Boot 中如何解决跨域问题 ?
后端通过 (CORS,Cross-origin resource sharing) 来解决跨域问题。这种解决方案并非 Spring Boot 特有的,还可以可以通过实现WebMvcConfigurer接口然后重写addCorsMappings方法解决跨域问题。
@Configurationpublic
class CorsConfig implements WebMvcConfigurer {@Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/**").allowedOrigins("*").allowCredentials(true).allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS").maxAge(3600);}
}
SpringBoot性能如何优化
● 如果项目比较大,类比较多,不使用@SpringBootApplication,采用@Compoment指定扫包范围
● 在项目启动时设置JVM初始内存和最大内存相同
● 将springboot内置服务器由tomcat设置为undertow
实现定时任务
● 在 Spring Boot 中使用定时任务主要有两种不同的方式,一个就是使用 Spring 中的 @Scheduled 注解,另一-个则是使用第三方框架 Quartz。
简单的建议使用 Spring 中的 @Scheduled 的方式主要通过 @Scheduled 注解来实现。
在启动类需要使用@EnableScheduing来开启定时任务。
注意使用cron的参数,可以查询相关的cron网站。
Spring Boot 如何监控系统实际运行状况?
我们可以使用 Spring Boot Actuator 来对 Spring Boot 项目进行简单的监控。
org.springframework.boot
spring-boot-starter-actuator
集成了这个模块之后,你的 Spring Boot 应用程序就自带了一些开箱即用的获取程序运行时的内部状态信息的 API。 比如通过 GET 方法访问 /health 接口,你就可以获取应用程序的健康指标。
SpringBoot 如何做请求参数的校验
使用spring-boot-starter-web 依赖就够了
JSR提供的校验注解:
校验注解
● @Null 被注释的元素必须为 null
● @NotNull 被注释的元素必须不为 null
● @AssertTrue 被注释的元素必须为 true
● @AssertFalse 被注释的元素必须为 false
● @Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
● @Max(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
● @DecimalMin(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
● @DecimalMax(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
● @Size(max=, min=) 被注释的元素的大小必须在指定的范围内
● @Digits (integer, fraction) 被注释的元素必须是一个数字,其值必须在可接受的范围内
● @Past 被注释的元素必须是一个过去的日期
● @Future 被注释的元素必须是一个将来的日期
● @Pattern(regex=,flag=) 被注释的元素必须符合指定的正则表达式
写作不易,有用点个赞就可以~~~