springboot 2.26版本官方文档学习记录 2020 6.2日
Posted --0--
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot 2.26版本官方文档学习记录 2020 6.2日相关的知识,希望对你有一定的参考价值。
@RestController 注解 模板注解
@RequestMapping 提供路由信息 将请求与方法进行匹配
@EnableAutoConfiguration 基于添加的jar 由springboot 推测配置.eg :在添加了spring-boot-starter-web 的前提下,springboot 推测当前在部署web应用,由此进行springboot的设置.
在项目根路径下 使用 mvn spring-boot : run 可以开始项目.
如果需要创建可执行jar,需要在pom中添加 spring-boot-maven-plugin 插件.
当在pom使用<parent>标签来进行继承时,指定了spring-boot-starter-parent 的版本后,其他的starter版本可以忽略不写.
所有的官方starter 皆以spring-boot-starter-*这种模式存在.第三方包通常以 第三方工程名-spring-boot-starter 存在.
通常建议将主应用类放在工程的根目录下.在主类上通常会添加@SpringBootApplication注解.如果不使用@SpringBootApplication注解的话,可以使用@EnableAutoConfiguration 和 @ComponentScan 注解来替代.(为啥要替代呢?)
推荐使用@Configuration 注解加持的java class.在主配置类上可以使用@SpringBootApplication或者@EnableAutoConfiguration,只建议使用一个.
可以使用@Import来进行额外的配置类的引入,也可以使用@ComponentScan 来进行引入配置类(不只是获取所有带@Component的类),如果必须需要引入xml来进行配置,以config class 为起点,通过@ImportResource 来进行xml文件的引入.
排除特定的配置类:可以使用@SpringBootApplication(exclude={xxx.class}) 来进行排除.
@ComponentScan 来查找bean, @Autowired 进行构造器注入.
当application class放置在工程的root目录下,使用@ComponentScan注解可以将以下的@Service @Component @Controller @Repository 都生成java bean.
@SpringBootApplication 注解包含以下功能:
1.@EnableAutoConfiguration
2.@ConponentScan
3.@Configuration
开发工具依赖,当运行完全打包应用时是默认禁止的,如果使用java -jar 或者是使用了特殊的类加载器将被认为是生产环境,可以通过排除开发工具或者使用命令行来进行移除 -Dspring.devtools.restart.enabled=false 默认情况下 重新打包不包含devtools,默认情况下为了实时查看代码更新引起的变更,devtools 默认禁用缓存.通常缓存定义在application.properties文件中, 开发工具会监视classpath下的文件变更,当修改文件时会触发应用重启,在eclipse中保存修改文件会触发,在Idea中 build project.-->构建工程会触发重启,
在重启过程中 devtools 依赖于 应用上下文的关闭钩子函数来关闭devtools,(application context shutdown hook),所以这个特性不能关闭-->SpringApplication.setRegisterShutdown(false);
以spring-boot,spring-boot-devtools,spring-boot-autoconfigure,spring-boot-actuator,spring-boot-starter起头的工程文件修改不会触发devtools的重启.
重启与重载
重启使用两个类加载器,不改变的class 例如第三方jar加载到base classloader.开发的class放到重启类加载器上,当应用重启的时候,重启类加载器被丢掉后生成一个新的重启类加载器.重启会比冷启动更快因为少了第三方jar的加载.当重启不够快的时候可以考虑重载技术,JRebel通过重写classes 来奏效.
如果想要禁用devtools的重启,需要在run方法之前调用,
public static void main(String[] args){
System.setProperty("spring.devtools.restart.enadled","false");
SpringApplication.run(MyApp.class,args);
}
可以定义一个触发文件,只有修改这个文件的时候才会触发devtools的重启,文件名.reloadtrigger 需要放在类路径下.之后设置属性:spring.devtools.restart.trigger-file=.reloadtrigger .
当打开多模块工程时,如果部分模块没有引入,存在两个类加载器可能会引发问题,可以通过创建一个MATA-INF/spring-devtools.properties的文件,在这个文件中定义哪些类通过base classloader加载,那些听过重启类加载器加载.
在使用标准的ObjectInputStream 进行反序列化的时候,重启功能可能会出现异常.如果需要反序列化数据,可以通过Spring的ConfigurableObjectInputStream 和 Thread.currentThread().getContextClassLoader()联合使用.但是部分第三方库可能会出现问题,如果遇到需要反馈bug.
运行时重载服务器 允许在文件变更的时候刷新浏览器,,支持谷歌火狐和sari浏览器.一次只能运行一个,如果打开了多个应用,只有第一个应用有运行时重载服务器的支持.
以上是关于springboot 2.26版本官方文档学习记录 2020 6.2日的主要内容,如果未能解决你的问题,请参考以下文章