• 盘点一下企业最常用的几个 Spring Boot Starter
    Spring Boot让我们的Spring应用变的更轻量化。SpringBoot运行开发工具:jdk8,IDEA,STS,eclipse这些都支持快速启动SpringBoot工程。首先只用maven我们创建的maven工程直接以jar包的形式创建就行了,首先我们来引入SpringBoot的依赖首先我们需要依赖SpringBoot父工程,这是每个项目中必须要有的。@SpringBootApplication:之前用户使用的是3个注解注解他们的main类。由于这些注解一般都是一起使用,spring boot提供了一个统一的注解@SpringBootApplication。整合JdbcTemplate引入依赖: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.2.RELEASE</version> </parent> <dependencies> <!--引入WEB模块--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!
  • 六大法宝解决 Redis 缓存雪崩 | 本月无套路送书来啦
    本文节选自 《Spring5 企业级开发实战》Redis 雪崩缓存层承载着大量的请求,有效保护了存储层。解决缓存雪崩,可以从以下几个方面入手。分布式环境下使用 Redis 分布式锁实现缓存重建,优点是设计思路简单,对数据一致性有保障;缺点是代码复杂度增加,有可能会造成用户等待。如在 Redis 中将 key 的过期时间设置为 60 min,在对应的 value 中设置逻辑过期时间为 30 min。这种异步重建缓存的方式可以有效避免大量的 key 同时失效。第 4 章和第 5 章概述 Spring 5 和 Java 8 的新特性。
  • 惊呆了,Spring Boot居然这么耗内存!
    点击上方蓝色字体,选择“设为标星”优质文章,第一时间送达Spring Boot总体来说,搭建还是比较容易的,特别是Spring Cloud全家桶,简称亲民微服务,但在发展趋势中,容器化技术已经成熟,面对巨耗内存的Spring Boot,小公司表示用不起。如今,很多刚诞生的JAVA微服务框架大多主打“轻量级”,主要还是因为Spring Boot太重。压测时的内存占用如图,内存占用1520M,CPU上升到321%概览总结一个Spring Boot的简单应用,最少1G内存,一个业务点比较少的微服务编译后的JAR会大约50M;而Spring Cloud引入的组件会相对多一些,消耗的资源也会相对更多一些。定位上与Spring Boot不冲突,甚至可以将Vert.x结合Spring Boot使用。
  • 干货 | SpringBoot注解大全,值得收藏
    @Configuration 等同于spring的XML配置文件;使用Java代码可以检查类型安全。package com.example.myproject;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication // same as @Configuration @EnableAutoConfiguration @ComponentScanpublic class Application {public static void main {SpringApplication.run;}}@ResponseBody:表示该方法的返回结果直接写入HTTP response body中,一般在异步获取数据时使用,用于构建RESTful的api。你可以将@EnableAutoConfiguration或者@SpringBootApplication注解添加到一个@Configuration类上来选择自动配置。可以自动收集所有的Spring组件,包括@Configuration类。如果没有配置的话,Spring Boot会扫描启动类所在包下以及子包下的使用了@Service,@Repository等注解的类。
  • 一键部署 Spring Boot 到远程 Docker 容器,就是这么秀!
    不知道各位小伙伴在生产环境都是怎么部署 Spring Boot 的,打成 jar 直接一键运行?打成 war 扔到 Tomcat 容器中运行?将 Spring Boot 项目打包到 Docker 容器中部署,有很多不同的方法,今天松哥主要来和大家聊一聊如何将 Spring Boot 项目一键打包到远程 Docker 容器,然后通过运行一个镜像的方式来启动一个 Spring Boot 项目。至于其他的 Spring Boot 结合 Docker 的用法,大家不要着急,后续的文章,松哥会和大家慢慢的一一道来。由于 Spring Boot 运行时需要 tmp 目录,这里数据卷配置一个 /tmp 目录出来。
  • 手摸手带你搞定 Spring Boot Admin 监控数据可视化!
    大家知道,Spring Boot 中通过 Actuator 来提供监控数据,我们可以借此来获取项目的运行状况,实时掌控项目的运行信息。可是 Actuator 返回的都是 JSON 字符串,这就没法分析了呀!关于这个问题,解决方案很多,例如 Hystrix Dashboard、Grafana、Prometheus 等等,这些外部工具也都做的不错,功能相对来说也比较全面。不过今天松哥要给大家介绍另外一个监控数据可视化的工具,那就是 Spring Boot Admin,这是一个使用起来更加方便的好玩的监控数据数据可视化,也包含了邮件自动报警等功能。废话不多 ,我们 Java极客技术给大家录制了一集视频教程,来聊一聊这个事。要是帮到你了可以点一下右下角在看或者转发支持一下哦。
  • SpringBoot常用注解大全
    @Configuration 等同于spring的XML配置文件;使用Java代码可以检查类型安全。packagecom.example.myproject;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication//sameas@Configuration@EnableAutoConfiguration@ComponentScanpublicclassApplication{publicstaticvoidmain{SpringApplication.run;}}@ResponseBody:表示该方法的返回结果直接写入HTTP response body中,一般在异步获取数据时使用,用于构建RESTful的api。@EnableAutoConfiguration:Spring Boot自动配置:尝试根据你添加的jar依赖自动配置你的Spring应用。你可以将@EnableAutoConfiguration或者@SpringBootApplication注解添加到一个@Configuration类上来选择自动配置。可以自动收集所有的Spring组件,包括@Configuration类。如果没有配置的话,Spring Boot会扫描启动类所在包下以及子包下的使用了@Service,@Repository等注解的类。
  • 牛逼!教你自定义一个 Spring Boot Starter
    参考:https://juejin.im/post/5cb165486fb9a068a60c2827spring-boot-starter-xxx是官方提供Starter的命名规则,非官方Starter的命名规则官方建议为 xxx-spring-boot-starter二.搭建项目建立SpringBoot项目,清除resources下的文件和文件夹Maven依赖如下:<dependencies><!--封装Starter核心依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-autoconfigure</artifactId><version>2.1.3.RELEASE</version></dependency><!--因为要使用RestTemplate和转换Json,所以引入这两个依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.1.3.RELEASE</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.45</version></dependency></dependencies>spring-boot-configuration-processor不是必须的,它的作用是和编译时生成 spring-configuration-metadata.json,此文件主要给IDEA使用。配置此JAR相关配置属性在 application.yml中,你可以用Ctrl+鼠标左键点击属性名,IDE会跳转到你配置此属性的类中,并且编写application.yml会有代码提示。
  • 惊呆了,Spring Boot居然这么耗内存!
    扫描下方二维码试读Spring Boot总体来说,搭建还是比较容易的,特别是Spring Cloud全家桶,简称亲民微服务但在发展趋势中,容器化技术已经成熟,面对巨耗内存的Spring Boot,小公司表示用不起。如今,很多刚诞生的JAVA微服务框架大多主打“轻量级”,主要还是因为Spring Boot太重。压测时的内存占用如图,内存占用1520M,CPU上升到321%概览总结一个Spring Boot的简单应用,最少1G内存,一个业务点比较少的微服务编译后的JAR会大约50M;而Spring Cloud引入的组件会相对多一些,消耗的资源也会相对更多一些。定位上与Spring Boot不冲突,甚至可以将Vert.x结合Spring Boot使用。
  • 基于 Spring Boot 的 Restful 风格实现增删改查
    不过在看了很多关于Spring Boot的介绍之后,并没有想象中的那么难,于是开始准备学习Spring Boot。在闲暇之余的时候,看了下Spring Boot实战以及一些大神关于Spring Boot的博客之后,开始写起了我的第一个Spring Boot的项目。在能够对Spring Boot进行一些简单的开发Restful风格接口实现CRUD功能之后,于是便有了本篇博文。Spring Boot介绍Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。感觉使用SpringBoot开发程序是不是非常的简单呢!SpringBoot会搞定执行应用程序所需的各种后勤工作,你只要搞定应用程序的代码就好。-- Spring Boot Mybatis 依赖 --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>${mybatis-spring-boot}</version> </dependency> <!我们来正式开发SpringBoot项
  • 为什么要放弃 JSP ?
    控制层负责接收参数,调用相关业务层,封装数据,以及路由到 JSP 页面。这就是为什么,越是大中型的 Web 应用,他们越是要解耦。使用 JSP 的痛点动态资源和静态资源全部耦合在一起,无法做到真正的动静分离。第一次请请求 JSP,必须要在 Web 服务器中编译成 Servlet,第一次运行会较慢。每次请求 JSP 都是访问 Servlet 再用输出流输出的 html 页面,效率没有直接使用 html 高。如果 JSP 中的内容很多,页面响应会很慢,因为是同步加载。减少后端服务器的并发压力,除了接口以外的其他所有 http 请求全部转移到前端 nginx
  • 扎心一问:数据库分库分表就能无限扩容吗?
    任凭你用户再多,并发再高,我只要无限扩容数据库,无限扩容应用,就可以了。这也是本文的标题,分库分表就能解决无限扩容吗?其实,这个问题和 RPC 的问题有点类似:数据库连接过多!!!假设我们根据 range 分成了 10 个库,现在有 10 个应用,我们让每个应用只连一个库,当应用增多变成 20个,数据库的连接不够用了,我们就将 10 个库分成 20 个库,这样,无论你应用扩容到多少个,都可以解决数据库连接数过多的问题。最后本文从单体应用开始,逐步讲述了一个正常后台的演进历程,知道了分库分表并不能解决“无限扩容” 的问题,只有单元化才能解决这问题。
  • 让 Spring Boot 启动更快一点
    点击上方“方志朋”,选择“设为星标”回复”666“获取新整理的面试资料“Spring有多快?”这是 2018 Spring One Platform 中的一场会议。看完会议视频,我自己动手试了一下。下面是我做出的测试结果。还没有观看视频的朋友推荐看一下,非常有意思。https://springoneplatform.io/2018/sessions/how-fast-is-spring-本文使用的代码https://github.com/bufferings/spring-boot-startup-mybe
  • Spring Boot 中自定义 SpringMVC 配置,到底继承谁?
    也就是说,在 Spring Boot 1.x 的时代,如果我们需要自定义 SpringMVC 配置,直接继承 WebMvcConfigurerAdapter 类即可。WebMvcConfigurer根据上一小节的解释,小伙伴们已经明白了,WebMvcConfigurer 是我们在 Spring Boot 2.x 中实现自定义配置的方案。),凡是涉及到自定义 SpringMVC 配置的地方,也都是通过实现 WebMvcConfigurer 接口来完成的。在这里首先大家需要明确的是,WebMvcConfigurationSupport 类本身是没有问题的,我们自定义 SpringMVC 的配置是可以通过继承 WebMvcConfigurationSupport 来实现的。Spring Boot 给我们提供了很多自动化配置,很多时候当我们修改这些配置的时候,并不是要全盘否定 Spring Boot 提供的自动化配置,我们可能只是针对某一个配置做出修改,其他的配置还是按照 Spring Boot 默认的自动化配置来,而继承 WebMvcConfigurat
  • 8月份Github上最热门的Java开源项目
    3spring-cloud-alibabahttps://github.com/spring-cloud-incubator/spring-cloud-alibabaSpring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。4spring-boot-plushttps://github.com/geekidea/spring-boot-plus Star 867spring-boot-plus是一个后台快速开发框架,集成了spring boot常用开发组件。6spring-boot-api-project-seedhttps://github.com/lihengming/spring-boot-api-project-seed Star 5235Spring Boot API Project Seed 是一个基于Spring Boot & MyBatis的种子项目,用于快速构建中小型API、RESTful API项目,该种子项目已经有过多个真实项目的实践,稳定、简单、快速7SpringCloudhttps://github.com/zhoutaoo/SpringCloud Star 1210该项目基于SpringCloud2.0的微服务开发脚手架,整合了spring-security-oauth2、apollo、eureka、feign、hystrix、springcloud-gateway、springcloud-bus等。治理方面引入elasticsearch、skywalking、springboot-admin、zipkin等,让项目开发快速进入业务开发,而不需过多时间花费在架构搭建上8mall-learninghttps://github.com/macrozheng/mall-learning Star 2109mall学习教程,架构、业务、技术要点全方位解析。涵盖了SpringBoot2.1.3、MyBatis3.4.6、Elasticsearch6.2.2、RabbitMQ3.7.15、Redis3.2、Mongodb3.2、Mysql5.7等技术,采用Docker容器化部署。
  • Spring Boot启动慢?也许你该试试这些优化方法
    看完会议视频,我自己动手试了一下。https://springoneplatform.io/2018/sessions/how-fast-is-spring-本文使用的代码https://github.com/bufferings/spring-boot-startup-mybench我使用的是 OpenJDK 11。java--versionopenjdk11.0.12018-10-16OpenJDKRuntimeEnvironment18.9OpenJDK64-BitServerVM18.9可以按照下面这样运行基准测试。./mvnwcleanpackage1. FluxBaseline我使用 SpringInitializr 创建项目,仅包含 Reactive Web。接下来,我会写一个 WebMVC 风格的极简controller。--lookupparentfromrepository--></parent>启动结果 2.938 ± 0.287 s/op。BenchmarkModeCntScoreErrorUnitsMyBenchmark.case01_FluxBaseliness102.938±0.287s/op现在,以这个结果作为基线。让我们从这里开始。也许仅仅是为了比较 Tomcat 和 Netty?BenchmarkModeCntScoreErrorUnitsMyBenchmark.case01_FluxBaseliness102.938±0.287s/opMyBenchmark.case02_Webss103.281±0.342s/opWebFlux 快了一点,难道不是吗?BenchmarkModeCntScoreErrorUnitsMyBenchmark.case01_FluxBaseliness102.938±0.287s/opMyBenchmark.case03_WithContextIndexerss103.063±0.102s/op我检查了 spring.components,发现只包含了一个组件。我应该尝试更大一点的项目,这样才能看到效果。##SunNov0418:42:59JST2018com.example.DemoApplication=org.springframework.stereotype.Component4. 惰性初始化尝试了惰性初始化。
  • 一个小小的里程碑!啥也不说了,签名书奉上!
    就在昨天,松哥的公众号迎来了第 20000 个读者,算是一个小小的里程碑吧。不得不说,松哥在运营公众号这事上后知后觉没有一丁点的天赋。于是,从今年 3 月份到现在,一共发了 106 篇原创,这些原创主要围绕 Spring Boot 和前后端分离来写的,当然也有一个小小的 MyCat 系列,这些松哥以后都会给大家整理好。小伙伴平时看到了合胃口的文章,顺手点个在看我就很开心啦,如果还能转发一下,那松哥就要膨胀了。好了,和大家又叨叨了这么多,最后,5 本松哥自己的签名书《Spring Boot + Vue 全栈开发实战》送给经常来公众号打卡的小伙伴。