Spring 框架给企业软件开发者提供了常见问题的通用解决方案,包括那些在未来开发中没有意识到的问题。但是,它构建的 J2EE 项目变得越来越臃肿,逐渐被 Spring Boot 所替代。 我们已经在几个项目中使用了 Spring Boot ,今天我们就来一起讨论一下如何改进 Spring Boot 应用的性能。 首先,从之前我在开发中遇到的一个问题说起。 总结 这些都是我们在项目开发中使用到的一些优化 Spring Boot 应用的小技巧,对于大的应用性能的提高还是很明显的。大家可以尝试一下,然后告诉我们你的测试结果。 摘选文章及链接: (1)Spring Boot 性能优化:Spring Boot Performance; (2)Spring Boot 内存优化:Spring Boot Memory Performance ; (3)https://www.techempower.com/benchmarks/; (4)Spring 应用程序优化:Optimizing Spring Framework for App Engine
方便项目启动,不需要下载Tomcat或者Jetty 针对目前的容器优化,目前来说没有太多地方,需要考虑如下几个点 线程数 超时时间 jvm优化 针对上述的优化点来说,首先线程数是一个重点,初始线程数和最大线程数 jvm优化一般来说没有太多场景,无非就是加大初始的堆,和最大限制堆,当然也不是无限增大,根据的情况进快速开始 在spring boot配置文件中application.yml,添加以下配置 server ,最大线程数是100,初始化线程是20,超时时间是5000ms Jvm优化 这块主要不是谈如何优化,jvm优化是一个需要场景化的,没有什么太多特定参数,一般来说在server端运行都会指定如下参数 初始内存和最大内存基本会设置成一样的 64位JDK默认启动该模式 java -server -jar springboot-1.0.jar 2.指定堆参数 这个根据服务器的内存大小,来设置堆参数。 在【1】中填入Remote项目名称,在【2】中填IP地址和端口号,在【3】选择远程调试的项目module,配置完成后点击OK即可 如果碰到连接超时的情况,很有可能服务器的防火墙的问题,举例CentOs7
分析spring-boot-starter-parent 按住Ctrl键,然后点击pom.xml中的spring-boot-starter-parent,跳转到了spring-boot-starter-parent /spring-boot-dependencies</relativePath> </parent> 按住Ctrll键,然后点击pom.xml中的spring-boot-starter-dependencies </activemq.version> <antlr2.version>2.7.7</antlr2.version> <appengine-sdk.version>1.9.63</appengine-sdk.version 分析spring-boot-starter-web 按住Ctrll键,然后点击pom.xml中的spring-boot-starter-web,跳转到了spring-boot-starter-web的pom.xml 的pom.xml中我们可以发现,spring-boot-starter-web就是将> web开发要使用的spring-web、spring-webmvc等坐标进行了“打包”,这样我们的工程只要引入spring-boot-starter-web
文章目录 搭建Spring Boot开发环境 使用Spring Tool Suit 构建 使用 IntelliJ IDEA来构建 Spring Boot配置 入口类的main方法和@SpringBootApplication 使用Spring Tool Suit 构建 Spring Boot-Spring Tool Suit + Gradle 构建第一个Spring Boot 项目01 Spring Boot-Spring 版本 商用版本 Spring Boot 2.0.6 ? ---- 如果没有Spring Initializr ,需要安装插件 操作:setting—>plugins—>搜索Spring boot—>勾选安装Spring boot插件,重启IDEA。 ---- 使用@ImportResource加载xml 虽然Spring boot提倡使用Java注解的方式来实现零配置的应用开发,但是并不代表不支持加载xml配置。
@ComponentScan @EnableAutoConfiguration 本文是《凯哥陪你学系列-框架学习之spring boot框架学习》中第二篇 spring boot核心(1) 声明:本文系凯哥 一:spring boot 入口和注解解析 回顾上篇中,我们讲到第一个spring boot应用中入口: ? 请点击此处输入图片描述 ? 例如:我们在pom.xml中配置了spring-boot-starter-web的依赖,项目中也就会引入SpringMVC的依赖,Spring Boot就会自动配置tomcat和SpringMVC。 spring boot自动配置后如下图: ? 请点击此处输入图片描述 ? 延伸: 通过上面的了解,我们得知,spring boot会根据项目中jar包依赖,自动做出配置,spring boot支持的自动配置如下(非常多的。下图并非全部): ? 请点击此处输入图片描述 ?
Spring Boot 集成 Redis 1.在项目中添加依赖 <dependency> <groupId>org.springframework.boot</groupId> Lettuce 集成 Redis 服务 导入依赖 由于 Spring Boot 2.X 默认集成了 Lettuce ,所以无需导入。 getId()+","+user2.getUserName()+","+user2.getUserSex()); } } 执行结果如下: ? <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId 总结 上面介绍了 Spring Boot 2.X 如何通过 Lettuce 和 Jedis 来集成 Redis 服务,按项目需求,我们也可以自定义操作类来实现数据操作。
2:修改自定义启动的banner 3:全局配置文件 本文是《凯哥陪你学系列-框架学习之spring boot框架学习》中第三篇 spring boot框架学习3-spring boot核心(2) 声明: 并且我们从spring boot已经为我们准备了很多自动配置的。在上节中,也提出了问题。怎么手动配置,不让spring boot自动配置呢? 比如,我们不想让spring boot自动配置redis,而是想通过我们手动配置redis。这种情况有该怎么解决呢? 回看springbootapplication这个注解源码: ? 三:全局配置文件 spring boot项目使用一个全局的配置文件application.properties或者是application.yml。 我们知道,spring boot基础的tomcat默认端口是8080.那么接下来我们修改端口为8888 3.1:修改默认tomcat端口为8888 ? ? 重启启动项目: ?
在 第一个 Web 应用 Hello Spring Boot 2 这篇文章中,我们已经介绍通过修改 Spring Boot 项目的全局配置文件,来解决端口冲突问题。 当然除了 server.port 属性之外,Spring Boot 官方还提供了很多可配置的属性,感兴趣的小伙伴可以访问 spring-boot/common-application-properties boot 2.x 接着定义一个 Blog 类: 当在 Idea 中输入以上代码时,Idea 会提示 Spring Boot Configuration Annotation Processor not blog blog.title=spring boot 2.x blog.fullTitle=${blog.name}-${blog.name} 二、自定义配置文件 除了可以在 application.properties v2, k1=v1}, lists=[a, b, c], dog=Dog(name=yoyo, age=1)) 三、多环境配置 Spring Boot 的多环境配置文件名需要满足 application
如果在classpath路径下存在commons-pool2,默认你会获得一个连接池工厂。 2. MongoDB spring-boot-starter-data-mongodb导入依赖。 spring-boot-starter-artemis导入依赖 2. 当部署到一个恰当的J2EE应用服务器时也会支持JTA事务。 当发现一个JTA环境时,Spring Boot将使用Spring的JtaTransactionManager来管理事务。 spring-boot-starter-actuator导入依赖。 2. endpoints 端点 Actuator端点使你可以监视应用并与之交互。 2. 安装Spring Boot 应用。
对于 Spring Boot 应用来说我们可以通过一个轻量级的监控工具 Spring Boot Admin (SBA) 来进行监控。 2. Spring Boot Admin Spring Boot Admin是由德国软件工程师 Johannes Edmeier 开源的用于管理和监控 Spring Boot 应用程序。 3.1 配置 Spring Boot Admin Server Spring Boot Admin Server 一般推荐独立作为一个 Spring Boot jar应用运行。 (adminServerContextPath + "/login").permitAll() .anyRequest().authenticated() // <2> 总结 今天我们学习了使用 Spring Boot Admin 对 Spring Boot 应用进行监控。也学习了如何对 Spring Boot Admin 进行安全访问控制,还有一些有用的进阶操作。
Spring boot with Oauth2 下面例子由三个项目组成,分别是 tools, server, client。 其中 tools 是密码生成工具 5.20.1. Maven <? <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc >org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test Test 启动 Spring boot Server 项目 mvn spring-boot:run 启动后 Spring boot 会导入 data.sql 文件 mysql> select * from
@SpringBootConfiguration:使用了@Configuration注解,声明基于Spring的java配置 @EnableAutoConfiguration:启用Spring应用程序上下文的自动配置 @ComponentScan:启用组件扫描,这样写的web控制器类和其他组件才能被发现并注册到容器中,比如@Controller,使用该注解的时候才能被扫描到 在Spring boot项目中,可以Application (要运行Spring boot有几种方式,包括传统的WAR文件部署,以及使用Gradle的bootRun任务:gradle bootRun或者是先使用 gradle build来构建项目,生成一个jar ,然后在命令行里使用java运行:java -jar build/libs/demo-0.0.1-SNAPSHOT.jar) @Configuration 如果在Spring boot的自动配置外想使用其他的 Spring 配置,可以直接写在@Configuration注解的类中,组件扫描会发现该类的(注意组件扫描路径要加入该类相关路径)
避免重复扫描Spring Boot使用自动配置来为应用程序提供默认配置。但是,如果您的应用程序中包含多个@SpringBootApplication注解,则可能会发生重复扫描的情况。 Spring Boot提供了异步处理的支持。您可以在方法上使用@Async注解来指示方法应该异步执行。 您可以使用Spring Boot的静态资源处理功能来处理静态资源。 Spring Boot提供了JPA分页的支持。您可以在Repository接口中定义一个分页方法。
Spring Boot提供了对多种缓存技术的支持,例如,Ehcache、Redis和Caffeine等。 Spring Boot提供了异步数据库访问的支持。您可以在Repository接口中定义异步方法。 Spring Boot提供了对多种连接池技术的支持,例如,HikariCP、Tomcat JDBC和Commons DBCP2等。
1、自动化配置 Spring Boot 对于开发人员最大的好处在于可以对 Spring 应用进行自动配置。 Spring Boot 会根据应用中声明的第三方依赖来自动配置 Spring 框架,而不需要进行显式的声明。 比如当声明了对 HSQLDB 的依赖时,Spring Boot 会自动配置成使用 HSQLDB 进行数据库操作。 Spring Boot 推荐采用基于 Java 注解的配置方式,而不是传统的 XML。 Spring Boot 使得这样的切换变得很简单。 2、外部化的配置 在应用中管理配置并不是一个容易的任务,尤其是在应用需要部署到多个环境中时。 若继续在application.properties中添加 如: wisely2.name=wyf2 wisely2.gender=male2 定义配置类: @ConfigurationProperties
在一些快速项目项目中,会使用H2作为数据库 引入jar包 使用mybatis作为ORM pom.xml <dependency> <groupId>org.mybatis.spring.boot </groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.4</version> </dependency > <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <version>1.4.200 spring: datasource: url: jdbc:h2:mem:testdb #配置数据库URL driver-class-name: org.h2.Driver #设置数据库驱动 SQL语法跟MySQL有一点出入,需要检查一下,另外就是不能漏掉建表语句后面的分号";" 参考 Spring Boot With H2 Database
@SpringBootApplication是spring boot最重要的一个注解,用于快捷配置启动类。 import org.springframework.boot.*; import org.springframework.boot.autoconfigure.*; public static void main(String[] args) throws Exception { SpringApplication.run(Run.class, args); 这个Run.java是一个独立的spring boot启动类,这里不应该有业务功能,上一篇的hello world业务代码应该写在一个单独的@Controller里面,和上一篇相比,这里用@SpringBootApplication替换了@EnableAutoConfiguration org.springframework.context.annotation.Bean; @SpringBootConfiguration:说明这是一个配置文件类,它会被@ComponentScan扫描到 @Bean:就是在spring
Spring Boot是一个快速构建应用程序的框架,但在高负载下可能会出现性能问题。在本文中,我们将讨论如何对Spring Boot应用程序进行性能优化,以提高其性能和响应能力。 我们将探讨一些常见的性能优化技术,并提供一些示例。启用缓存Spring Boot提供了缓存支持,可通过在启动类上添加@EnableCaching注解来启用。 使用连接池Spring Boot默认使用Tomcat JDBC连接池。连接池可用于缓存数据库连接,从而提高应用程序的性能。如果您没有使用连接池,请考虑将其添加到您的应用程序中。 tomcat-jdbc</artifactId> <version>9.0.48</version></dependency>您可以在application.properties文件中配置连接池:spring.datasource.url =100spring.datasource.max-idle=20spring.datasource.min-idle=5在上面的示例中,initial-size表示连接池中最初创建的连接数,max-active
Spring Boot集成CKFinder-优化,对一些配置做一下优化,使配置更加灵活。 优化一:ckfinder.xml ckfinder.xml文件中,baseDir、baseURL需要配置固定路径。把这2个配置放到application.properties中。这样就灵活多了。 Spring Boot支持Servlet的注入,参考示例。 优化二:ImageBrowseServlet ImageBrowseServlet上文已经做了优化,Servlet用注入的方式更灵活,可以很方便的初始化一些参数。
今天来聊聊 Spring Boot 整合 Freemarker。 Freemarker 简介 这是一个相当老牌的开源的免费的模版引擎。 好了,这是一个简单的介绍,接下来我们来看看 Freemarker 和 Spring Boot 的一个整合操作。 1.创建工程 首先创建一个 Spring Boot 工程,引入 Freemarker 依赖,如下图: ? <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker 结语 本文和大家简单聊一聊 Spring Boot 整合 Freemarker,算是对 Spring Boot2 教程的一个补充(后面还会有一些补充),有问题欢迎留言讨论。