springboot 2.26版本官方文档学习记录 2020 6.2日

2020-12-26 22:27

阅读:379

标签:NPU   上下文   imp   生成   刷新   运行   缓存   tst   属性   

@RestController 注解  模板注解

@RequestMapping 提供路由信息 将请求与方法进行匹配

@EnableAutoConfiguration 基于添加的jar 由springboot 推测配置.eg :在添加了spring-boot-starter-web 的前提下,springboot 推测当前在部署web应用,由此进行springboot的设置.

在项目根路径下 使用 mvn spring-boot : run 可以开始项目.

如果需要创建可执行jar,需要在pom中添加 spring-boot-maven-plugin 插件.

当在pom使用标签来进行继承时,指定了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日

标签:NPU   上下文   imp   生成   刷新   运行   缓存   tst   属性   

原文地址:https://www.cnblogs.com/--0--/p/13034714.html


评论


亲,登录后才可以留言!