一、SpringBoot2.x使用Dev-tool热部署简介:介绍什么是热部署,使用springboot结合dev-tool工具,快速加载启动应用官方地址:https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/reference/htmlsingle/#using-boot-devtools核心依赖包:<dependency>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-devtools</artifactId>  <optional>true</optional>  </dependency>添加依赖后,在ide里面重启应用,后续修改后马上可以生效classloader不被热部署的文件1、/META-INF/maven, /META-INF/resources, /resources, /static, /public, or /templates2、指定文件不进行热部署 spring.devtools.restart.exclude=static/**,public/**3、手工触发重启 spring.devtools.restart.trigger-file=trigger.txt改代码不重启,通过一个文本去控制https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/reference/htmlsingle/#using-boot-devtools-restart-exclude注意点:生产环境不要开启这个功能,如果用java -jar启动,springBoot是不会进行热部署的二、SpringBoot2.x配置文件讲解简介:SpringBoot2.x常见的配置文件 xml、yml、properties的区别和使用xml、properties、json、yaml1、常见的配置文件 xx.yml, xx.properties,1)YAML(Yet Another Markup Language)写 YAML 要比写 XML 快得多(无需关注标签或引号)使用空格 Space 缩进表示分层,不同层次之间的缩进可以使用不同的空格数目注意:key后面的冒号,后面一定要跟一个空格,树状结构application.properties示例server.port=8090  server.session-timeout=30  server.tomcat.max-threads=0  server.tomcat.uri-encoding=UTF-8 application.yml示例server:  port: 8090  session-timeout: 30  tomcat.max-threads: 0  tomcat.uri-encoding: UTF-8 2、默认示例文件仅作为指导。 不要将整个内容复制并粘贴到您的应用程序中,只挑选您需要的属性。3、参考:https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/reference/htmlsingle/#common-application-properties如果需要修改,直接复制对应的配置文件,加到application.properties里面三、SpringBoot注解配置文件自动映射到属性和实体类实战简介:讲解使用@value注解配置文件自动映射到属性和实体类1、配置文件加载方式一1、Controller上面配置@PropertySource({"classpath:resource.properties"})2、增加属性@Value("${test.name}")private String name;方式二:实体类配置文件步骤:1、添加 @Component 注解;2、使用 @PropertySource 注解指定配置文件位置;3、使用 @ConfigurationProperties 注解,设置相关属性;4、必须 通过注入IOC对象Resource 进来 , 才能在类中使用获取的配置文件值。@Autowiredprivate ServerSettings serverSettings;例子:@Configuration@ConfigurationProperties(prefix="test")@PropertySource(value="classpath:resource.properties")public class ServerConstant {常见问题:1、配置文件注入失败,Could not resolve placeholder解决:根据springboot启动流程,会有自动扫描包没有扫描到相关注解, 默认Spring框架实现会从声明@ComponentScan所在的类的package进行扫描,来自动注入,因此启动类最好放在根路径下面,或者指定扫描包范围spring-boot扫描启动类对应的目录和子目录2、注入bean的方式,属性名称和配置文件里面的key一一对应,就用加@Value 这个注解如果不一样,就要加@value("${XXX}")四、SpringBoot个性化启动banner设置和debug日志简介:自定义应用启动的趣味性日志图标和查看调试日志1、启动获取更多信息 java -jar xxx.jar --debug2、修改启动的banner信息1)在类路径下增加一个banner.txt,里面是启动要输出的信息2)在applicatoin.properties增加banner文件的路径地址 spring.banner.location=banner.txt3)官网地址 https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/reference/htmlsingle/#boot-features-banners五、SpringBoot2.x配置全局异常实战讲解:服务端异常讲解和SpringBoot配置全局异常实战1、默认异常测试  int i = 1/0,不友好2、异常注解介绍@ControllerAdvice 如果是返回json数据 则用 RestControllerAdvice,就可以不加 @ResponseBody//捕获全局异常,处理所有不可知的异常@ExceptionHandler(value=Exception.class)六、SpringBoot2.x配置全局异常返回自定义页面简介:使用SpringBoot自定义异常和错误页面跳转实战1、返回自定义异常界面,需要引入thymeleaf依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency>2、resource目录下新建templates,并新建error.htmlModelAndView modelAndView = new ModelAndView();modelAndView.setViewName("error.html");modelAndView.addObject("msg", e.getMessage());return modelAndView;https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/reference/htmlsingle/#boot-features-error-handling七、SpringBoot启动方式讲解和部署war项目到tomcat9
简介:SpringBoot常见启动方式讲解和部署war项目Tomcat1、ide启动2、jar包方式启动maven插件:<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>如果没有加,则执行jar包 ,报错如下java -jar spring-boot-demo-0.0.1-SNAPSHOT.jarno main manifest attribute, in spring-boot-demo-0.0.1-SNAPSHOT.jar如果有安装maven 用 mvn spring-boot:run项目结构example.jar|+-META-INF|  +-MANIFEST.MF+-org|  +-springframework|     +-boot|        +-loader|           +-<spring boot loader classes>+-BOOT-INF+-classes|  +-mycompany|     +-project|        +-YourClasses.class+-lib+-dependency1.jar+-dependency2.jar目录结构讲解https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/reference/htmlsingle/#executable-jar-jar-file-structure3、war包方式启动1)在pom.xml中将打包形式 jar 修改为war  <packaging>war</packaging>构建项目名称 <finalName>xdclass_springboot</finalName>2)tocmat下载 https://tomcat.apache.org/download-90.cgi3)修改启动类public class XdclassApplication extends SpringBootServletInitializer {@Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder application) {return application.sources(XdclassApplication.class);}public static void main(String[] args) throws Exception {SpringApplication.run(XdclassApplication.class, args);}}4)打包项目,启动tomcat4、启动容器介绍和第三方测试数据讲解使用Jmter测试工具测试性能,QPS,TPS,RThttps://examples.javacodegeeks.com/enterprise-java/spring/tomcat-vs-jetty-vs-undertow-comparison-of-spring-boot-embedded-servlet-containers/八、深入SpringBoot过滤器和Servlet3.0配置过滤器实战简介:讲解SpringBoot里面Filter讲解和使用Servlet3.0配置自定义Filter实战filter简单理解:人--->检票员(filter)---> 景点1、SpringBoot启动默认加载的Filter characterEncodingFilterhiddenHttpMethodFilterhttpPutFormContentFilterrequestContextFilter2、Filter优先级Ordered.HIGHEST_PRECEDENCEOrdered.LOWEST_PRECEDENCE低位值意味着更高的优先级 Higher values are interpreted as lower priority自定义Filter,避免和默认的Filter优先级一样,不然会冲突注册Filter的bean FilterRegistrationBean同模块里面有相关默认Filterweb->servlet->filter3、自定义Filter1)使用Servlet3.0的注解进行配置2)启动类里面增加 @ServletComponentScan,进行扫描3)新建一个Filter类,implements Filter,并实现对应的接口4) @WebFilter 标记一个类为filter,被spring进行扫描 urlPatterns:拦截规则,支持正则6)控制chain.doFilter的方法的调用,来实现是否通过放行不放行,web应用resp.sendRedirect("/index.html");场景:权限控制、用户登录(非前端后端分离场景)等1、 官网地址:https://docs.spring.io/spring-boot/docs/2.1.0.BUILD-SNAPSHOT/reference/htmlsingle/#boot-features-embedded-container-servlets-filters-listeners九、Servlet3.0的注解原生Servlet实战讲解:使用 Servlet3.0的注解自定义原生Servlet和Listener1、自定义原生Servlet@WebServlet(name = "userServlet",urlPatterns = "/test/customs")public class UserServlet extends HttpServlet{@Overridepublic void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {resp.getWriter().print("custom sevlet");resp.getWriter().flush();resp.getWriter().close();}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doGet(req, resp);}}十、Servlet3.0的注解原生Listener监听器实战简介:监听器介绍和Servlet3.0的注解自定义原生Listener监听器实战1、自定义Listener(常用的监听器 servletContextListener、httpSessionListener、servletRequestListener)@WebListenerpublic class RequestListener implements ServletRequestListener {@Overridepublic void requestDestroyed(ServletRequestEvent sre) {// TODO Auto-generated method stubSystem.out.println("======requestDestroyed========");}@Overridepublic void requestInitialized(ServletRequestEvent sre) {System.out.println("======requestInitialized========");}十一、SpringBoot2.X拦截器实战及新旧配置对比简介: 讲解拦截器使用,Spingboot2.x新版本配置拦截拦截器和旧版本SpringBoot配置拦截器区别讲解1、@Configuration继承WebMvcConfigurationAdapter(SpringBoot2.X之前旧版本)SpringBoot2.X 新版本配置拦截器 implements WebMvcConfigurer2、自定义拦截器 HandlerInterceptorpreHandle:调用Controller某个方法之前postHandle:Controller之后调用,视图渲染之前,如果控制器Controller出现了异常,则不会执行此方法afterCompletion:不管有没有异常,这个afterCompletion都会被调用,用于资源清理3、按照注册顺序进行拦截,先注册,先被拦截拦截器不生效常见问题:1)是否有加@Configuration2)拦截路径是否有问题 **  和 * 3)拦截器最后路径一定要 “/**”, 如果是目录的话则是 /*/Filter是基于函数回调 doFilter(),而Interceptor则是基于AOP思想Filter在只在Servlet前后起作用,而Interceptor够深入到方法前后、异常抛出前后等依赖于Servlet容器即web应用中,而Interceptor不依赖于Servlet容器所以可以运行在多种环境。在接口调用的生命周期里,Interceptor可以被多次调用,而Filter只能在容器初始化时调用一次。Filter和Interceptor的执行顺序过滤前->拦截前->action执行->拦截后->过滤后

可结合之前的博文2018最新SpringBoot2.0教程(零基础入门)观看理解

更多学习资料可参考:https://xdclass.net/html/course_catalogue.html?video_id=4

https://ke.qq.com/course/299498

转载于:https://www.cnblogs.com/xdclass/p/9569584.html

零基础快速入门SpringBoot2.0教程 (二)相关推荐

  1. 零基础快速入门SpringBoot2.0教程 (三)

    一.SpringBoot Starter讲解 简介:介绍什么是SpringBoot Starter和主要作用 1.官网地址:https://docs.spring.io/spring-boot/doc ...

  2. CSS零基础快速入门(详细教程)

    1,CSS概述 CSS是层叠样式表,由Cascading Style Sheets简称而来. CSS的功能为:能够对网页中元素位置的排版进行像素级精确控制,实现美化页面的效果,并且能够做到页面的样式和 ...

  3. HTML零基础快速入门(详细教程)

    1,HTML代码特点 <html><head></head><body>hello world!</body> </html> ...

  4. python海龟教程_Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 7. 条件循环...

    条件循环能够让程序在条件成立时(即为真时)重复执行循环体中的语句.如果条件一直成立(即永远不会为假),则循环会一直进行下去,不会停止.如果初始时,条件不成立,则循环 1 次也不会执行.Python 中 ...

  5. 【PR】零基础快速入门教程

    [PR]零基础快速入门教程 PR(Premiere)能做什么? PR欢迎界面及新建项目 工作区及窗口说明 导入文件 建立序列 视频剪辑 添加字幕 导出视频 使用软件:Premiere2020 新年卷起 ...

  6. python爬虫实践——零基础快速入门(四)爬取小猪租房信息

    上篇文章我们讲到python爬虫实践--零基础快速入门(三)爬取豆瓣电影 接下来我们爬取小猪短租租房信息.进入主页后选择深圳地区的位置.地址如下: http://sz.xiaozhu.com/ 一,标 ...

  7. 零基础快速入门web学习路线(含视频教程)

    下面小编专门为广大web学习爱好者汇总了一条完整的自学线路:零基础快速入门web学习路线(含视频教程)(绝对纯干货)适合初学者的最新WEB前端学习路线汇总! 在当下来说web前端开发工程师可谓是高福利 ...

  8. ROS2零基础快速入门

    ROS2入门最快需要多少时间?3天: ROS2开发一款基础机器人需要多久?3个星期: ROS2怎么才能算"精通"?不可能,3年也不行-- 如何判断一款通用性软件成熟并可以投入精力去 ...

  9. Linux零基础快速入门篇

    推荐教程:Linux零基础快速入门到精通 操作系统概述 操作系统是计算机软件的一种,它主要负责:作为用户和计算机硬件之间的桥梁,调度和管理计算机硬件进行工作而计算机,如果没有操作系统,就是一堆无法使用 ...

最新文章

  1. 如何用JavaScript的回调函数做出承诺
  2. java rect 旋转_处理(Java可视化语言):使用rectMode(CENTER)而不是rectMode(CORNER)旋转矩形,留下奇数衰落轨迹效果...
  3. python内存管理变量_Python变量内存管理
  4. ITK:转换三角网格为二进制图像
  5. ArcGIS网络分析之Silverlight客户端最近设施点分析(四)
  6. linux c之判断字符串是不是以另一字符串开始或者结尾
  7. 家用电脑改成无盘服务器,怎么把自己家电脑硬盘弄成无盘
  8. 【ElasticSearch 】ElasticSearch监控工具 cerebro
  9. 手机端放在线条中间的标题
  10. Qt中采用多线程实现Socket编程
  11. 1068. Find More Coins (30)
  12. 软件测试人员工作计划怎么写,软件测试个人工作计划.docx
  13. windows update 离线包下载
  14. ROS2中的行为树 BehaviorTree
  15. [渝粤教育] 扬州市职业大学 液压与气动技术 参考 资料
  16. mysql 分组去重只保留最新创建时间的数据
  17. 贷款买房怎么做才划算?贷款买房注意事项
  18. spark解析csv文件_Spark:解析CSV文件并按列值分组
  19. 迷你播放器--第一阶段(3)--MediaPlayer的封装
  20. 夕阳红旅游团第四周报告

热门文章

  1. 《如何高效学习》读书笔记(一)——整体性学习策略
  2. cocos2d-lua 3.5 android搭建常见错误
  3. oop第二章1知识点汇总
  4. sublime text3 格式化html代码
  5. python导入模块时的路径疑惑
  6. web 中防止sql注入
  7. 迫于项目压力研究果园
  8. python爬取天气_python3爬取各类天气信息
  9. 网线传输速度测试_高效的以太网测试仪应该具备哪些功能?
  10. 车辆动力学及控制_道路自适应车辆动力学控制研究(127页)【附下载】