Spring Boot学习/资料整理


=Start=

缘由:

整理一下在学习Spring Boot时收集到的不错的资料,方便以后参考。

正文:

参考解答:

Spring Boot快速入门
http://blog.didispace.com/spring-boot-learning-1/

使用Intellij中的Spring Initializr来快速构建Spring Boot/Cloud工程
http://blog.didispace.com/spring-initializr-in-intellij/

更多参考链接:

=END=


《 “Spring Boot学习/资料整理” 》 有 40 条评论

  1. Spring Boot 入门
    http://blog.csdn.net/catoop/article/details/50501664
    http://blog.csdn.net/column/details/spring-boot.html
    `
    Spring 官方网站本身使用Spring 框架开发,随着功能以及业务逻辑的日益复杂,应用伴随着大量的XML配置文件以及复杂的Bean依赖关系。
    随着Spring 3.0的发布,Spring IO团队逐渐开始摆脱XML配置文件,并且在开发过程中大量使用“约定优先配置”(convention over configuration)的思想来摆脱Spring框架中各种复杂的配置,衍生了Java Config。

    Spring Boot正是在这样的一个背景下被抽象出来的开发框架,它本身并不提供Spring框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于Spring框架的应用程序。也就是说,它并不是用来替代Spring的解决方案,而是和Spring框架紧密结合用于提升Spring开发者体验的工具。同时它集成了大量常用的第三方库配置(例如Jackson, JDBC, Mongo, Redis, Mail等等),Spring Boot应用中这些第三方库几乎可以零配置的开箱即用(out-of-the-box),大部分的Spring Boot应用都只需要非常少量的配置代码,开发者能够更加专注于业务逻辑。

    该项目旨在帮助开发者更容易地创建基于Spring的应用程序和服务,使得现有的和新的Spring开发者能够最快速地获得所需要的Spring功能。

    Spring Boot不生成代码,且完全不需要XML配置。其主要目标如下:
    – 为所有的Spring开发工作提供一个更快、更广泛的入门经验。
    – 开箱即用,你也可以通过修改默认值来快速满足你的项目的需求。
    – 提供了一系列大型项目中常见的非功能性特性,如嵌入式服务器、安全、指标,健康检测、外部配置等。
    `

  2. 通过Spring封装的方法操作mongodb,介绍了mongodb的基本语法查询、高级查询等介绍
    https://blog.csdn.net/column/details/15996.html

    Accessing Data with MongoDB
    https://spring.io/guides/gs/accessing-data-mongodb/

    springboot(十一):Spring boot中mongodb的使用
    http://www.ityouknow.com/springboot/2017/05/08/springboot-mongodb.html
    https://github.com/ityouknow/spring-boot-examples/tree/master/spring-boot-mongodb

    Spring Boot中使用MongoDB数据库
    http://blog.didispace.com/springbootmongodb/

  3. 初识Spring —— Bean的装配(一)
    http://hxblog.site/2018/06/09/Bean%E7%9A%84%E8%A3%85%E9%85%8D-%E4%B8%80/
    http://www.liuhaihua.cn/archives/523191.html
    `
    JavaBeans 是 Java 中一种特殊的类,可以将多个对象封装到一个对象(bean)中,特点是可序列化,提供无参构造器,提供 getter 方法和 setter 方法访问对象的属性。名称中的 “Bean” 是用于Java的可重用软件组件的惯用叫法

    在传统的Java应用中,bean的生命周期很简单。使用Java关键字new进行bean实例化,然后该bean就可以使用了。一旦该bean不再被使用,则由Java自动进行垃圾回收

    在传统的例子中,如果我们要创建一个 Bean,我们就要使用关键字 New,但是,在 Spring 中,Bean 的创建是由 Spring 容器进行的,也就是说,在 Spring 中使用 Bean 的时候,不是由关键字 New 来创建实例了。

    自动装配
    使用 XML 装配
    使用 Java 装配
    `

  4. SpringBoot切换Tomcat容器,SpringBoot使用Jetty容器
    https://www.cnblogs.com/fanshuyao/p/8668059.html
    https://blog.csdn.net/github_35169934/article/details/78573971
    `
    一、SpringBoot默认的容器为Tomcat,依赖包在spring-boot-starter-web下
    二、SpringBoot把容器修改为Jetty
    方法很简单,就是在pom.xml文件中,在引用的spring-boot-starter-web排除Tomcat的依赖包,然后再引入Jetty容器的依赖包。

    org.springframework.boot
    spring-boot-starter-web

    org.springframework.boot
    spring-boot-starter-tomcat

    org.springframework.boot
    spring-boot-starter-jetty

    `

  5. 这是一篇优雅的Springboot2.0使用手册
    https://blog.tengshe789.tech/2018/08/04/springboot/
    `
    1. 啥是Springboot
    2. 快速使用
    3. 配置文件
    4. Web开发
    5. 异步编程
    6. 数据访问
    7. 事物管理
    8. 定时任务
    9. 日志管理
    10. 拦截器
    11. 缓存
    12. 监控中心
    13. 性能优化
    14. 热部署
    14.1. 原理
    14.2. 应用场景
    14.3. Dev-tools
    14.3.1. POM
    14.3.2. 原理
    15. 发布打包
    15.1. Jar类型打包方式
    15.2. war类型打包方式
    15.3. 外部Tomcat运行
    15.4. POM
    16. 参考文献
    `

  6. Spring Boot的并发编程
    https://www.jdon.com/49728
    `
    在考虑Spring Boot应用程序中的并发性时,值得考虑的关键因素有:
    最大线程数 – 这是为处理对应用程序的请求而分配的最大线程数
    共享外部资源 – 调用外部共享资源(如数据库)
    异步方法调用 – 这些是在等待响应时将线程释放回线程池的方法调用
    共享内部资源 – 调用内部共享资源 – 例如高速缓存和可能共享的应用程序状态
    `

  7. Java 的 Spring Boot 中如何获取 x-real-ip/x-forwarded-for/remote_addr 等 IP地址信息
    https://www.cnblogs.com/EasonJim/p/8323017.html
    https://www.mkyong.com/java/how-to-get-client-ip-address-in-java/
    https://www.cnblogs.com/softidea/p/5705297.html
    https://stackoverflow.com/questions/22877350/how-to-extract-ip-address-in-spring-mvc-controller-get-call
    https://www.mkyong.com/spring-mvc/spring-mvc-how-to-get-client-ip-address/
    https://howtodoinjava.com/tomcat/tomcat-get-real-ip-behind-load-balancer/
    `
    区分大小写

    @RequestHeader Map requestHeader

    String xForwardedFor = requestHeader.containsKey(“X-Forwarded-For”) ? requestHeader.get(“X-Forwarded-For”) : “”;
    String xRealIp = requestHeader.containsKey(“X-Real-IP”) ? requestHeader.get(“X-Real-IP”) : “”;
    `

  8. SpringBoot 实现前后端分离的跨域访问(CORS)
    https://zhuanlan.zhihu.com/p/31016194
    https://www.jianshu.com/p/477e7eaa6c2f
    http://www.spring4all.com/article/177
    `
    序言:跨域资源共享向来都是热门的需求,使用CORS可以帮助我们快速实现跨域访问,只需在服务端进行授权即可,无需在前端添加额外设置,比传统的JSONP跨域更安全和便捷。

    一、基本介绍
    简单来说,CORS是一种访问机制,英文全称是Cross-Origin Resource Sharing,即我们常说的跨域资源共享,通过在服务器端设置响应头,把发起跨域的原始域名添加到Access-Control-Allow-Origin 即可。
    1. CORS工作原理
    2. Request Headers(请求头)
    3. Response Headers(响应头)

    二、CORS实现跨域访问的授权方式
    方式1:返回新的CorsFilter
    方式2:重写WebMvcConfigurer
    方式3:使用注解(@CrossOrigin)
    方式4:手工设置响应头(HttpServletResponse )

    三、测试跨域访问
    `

  9. Spring boot embedded jettty thread pool maximum size
    https://stackoverflow.com/questions/31913534/spring-boot-embedded-jettty-thread-pool-maximum-size
    https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#common-application-properties
    `
    在application.properties中添加配置,来覆盖Jetty的默认配置。
    server.port=8080 #设定监听端口

    ####Jetty specific properties########
    server.jetty.acceptors=600 # acceptor线程数(默认是200)
    #server.jetty.max-http-post-size=0 # put或post方法最大字节数
    #server.jetty.selectors= # selector线程数
    `
    spring boot jetty 配置
    https://blog.csdn.net/Revivedsun/article/details/78217760

    spring boot jetty 主要配置
    https://blog.csdn.net/genghaihua/article/details/79915965

  10. SpringBoot 究竟是如何跑起来的?
    https://mp.weixin.qq.com/s/WQNF0S9jKlWI0lC2a4YyhQ
    `
    不得不说 SpringBoot 太复杂了,我本来只想研究一下 SpringBoot 最简单的 HelloWorld 程序是如何从 main 方法一步一步跑起来的,但是这却是一个相当深的坑。你可以试着沿着调用栈代码一层一层的深入进去,如果你不打断点,你根本不知道接下来程序会往哪里流动。这个不同于我研究过去的 Go 语言、Python 语言框架,它们通常都非常直接了当,设计上清晰易懂,代码写起来简单,里面的实现同样也很简单。但是 SpringBoot 不是,它的外表轻巧简单,但是它的里面就像一只巨大的怪兽,这只怪兽有千百只脚把自己缠绕在一起,把爱研究源码的读者绕的晕头转向。但是这 Java 编程的世界 SpringBoot 就是老大哥,你却不得不服。即使你的心中有千万头草泥马在奔跑,但是它就是天下第一。如果你是一个学院派的程序员,看到这种现象你会怀疑人生,你不得不接受一个规则 —— 受市场最欢迎的未必就是设计的最好的,里面夹杂着太多其它的非理性因素。
    `

  11. 通过Spring Boot中的手动Bean定义提高启动性能
    https://www.jdon.com/51546
    Spring Boot 2.0(七):Spring Boot 如何解决项目启动时初始化资源
    https://mp.weixin.qq.com/s/1aEPIMGSILoxCvbYqCDKqQ

    SpringBoot启动初始化资源
    https://smniuhe.github.io/2018/09/08/SpringBoot%E5%90%AF%E5%8A%A8%E5%88%9D%E5%A7%8B%E5%8C%96%E8%B5%84%E6%BA%90/

    109. Spring Boot性能优化之加速启动【从零开始学Spring Boot】
    https://412887952-qq-com.iteye.com/blog/2361583

    SpringBoot 启动概述
    http://www.cnblogs.com/wade-luffy/p/9796805.html

  12. Spring Boot 是否很难用?为什么?
    https://www.zhihu.com/question/318377502
    `
    Spring最重要的是采用了 更好 的IoC和AOP的方式,它是演变自EJB,取长补短。所有的框架并非一蹴而就,都是经过很长时间的演变。所以我非常推荐去看看《Expert One-on-One J2EE Development without EJB》,作者是Spring Framework的Rod Johnson。前六章讲了架构设计的概念以及吐槽EJB的复杂。后面章节讲的是Spring的设计思路,这本书能够解释你在学习过程中碰到的问题。书虽然老了一些,但是架构问题千古不变,以不变应万变。

    作者:Robert Zee
    链接:https://www.zhihu.com/question/318377502/answer/641205726
    ==

    spring boot给你使用20%的时间去解决80%的问题,剩下20%的问题需要你用200%的时间去弄懂。
    `

    阿里P7给你一份超详细 Spring Boot 知识清单
    https://zhuanlan.zhihu.com/p/59274238

  13. Spring Boot 启用Gzip压缩
    https://www.cnblogs.com/larryzeal/p/7220291.html
    https://www.chenb.top/2018/06/13/spring-boot-gzip/
    `
    有两点需要注意:

    1、需要在application.properties里启用压缩,并设置压缩支持的格式(默认支持text/html等,但不支持application/json)
    server.compression.enabled=true
    server.compression.mime-types=application/json,application/xml,text/html,text/xml,text/plain

    2、默认情况下,仅会压缩2048字节以上的内容
    #默认就是2048 byte
    server.compression.min-response-size=2048
    `

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注