--------------SpringBoot
木叶之荣
这个作者很懒,什么都没留下…
展开
-
SpringBoot之CommandLineRunner接口和ApplicationRunner接口
我们在开发中可能会有这样的情景。需要在容器启动的时候执行一些内容。比如读取配置文件,数据库连接之类的。SpringBoot给我们提供了两个接口来帮助我们实现这种需求。这两个接口分别为CommandLineRunner和ApplicationRunner。他们的执行时机为容器启动完成的时候。这两个接口中有一个run方法,我们只需要实现这个方法即可。这两个接口的不同之处在于:Application原创 2016-08-12 23:42:28 · 24430 阅读 · 2 评论 -
SpringBoot启动流程简析(二)
在这篇文章中,我们接着上一篇的内容接着分析。 public ConfigurableApplicationContext run(String... args) { //启动应用的检测 StopWatch stopWatch = new StopWatch(); stopWatch.start(); //SpringBoot的上下原创 2017-12-19 23:55:20 · 1349 阅读 · 1 评论 -
SpringBoot启动流程简析(三)
我们在上一节中说了SpringBoot的应用上下文的对象是AnnotationConfigEmbeddedWebApplicationContext,通过名字直译就是注解配置的可嵌入的web应用上下文。我们对它先不做过多的介绍,在不远的文章中我们就会对它进行一下简单的分析。//上下文的一些准备动作prepareContext(context, environment, listeners原创 2017-12-20 23:00:54 · 1256 阅读 · 1 评论 -
SpringBoot启动流程简析(一)
我想很多人已经在项目中使用SpringBoot做项目开发的工作了,创建SpringBoot和启动SpringBoot应用都会较简单一点,下面我以SpringBoot官网上的Demo来简单的分析一些SpringBoot的启动流程,我们的启动主类代码如下:@SpringBootApplicationpublic class SpringBootAnalysisApplication { publ原创 2017-12-13 21:11:31 · 13701 阅读 · 2 评论 -
SpringBoot启动流程简析(四)
在我们之前的web开发中,通常都是将应用打成war包或者将编译之后的应用放到tomcat的webapps目录下(其他的web服务器放到相应的目录下),但是我们在用SpringBoot进行web开发的时候,只是启动了一个main类,然后就会神奇的发现tomcat竟然也被启动了(SpringBoot也内置了Jetty),SpringBoot是怎么做到的呢?下面我将慢慢揭开它的神秘面纱: 我们之前说过在原创 2017-12-25 21:37:56 · 1572 阅读 · 1 评论 -
SpringBoot之浅析配置项解析(三)
我们接着上一篇的文章继续分析。我们来看这一段代码://在上一篇文章中我们分析了getSearchNames()这个方法,这个方法默认返回 只有一个元素 application的List for (String name : getSearchNames()) { //我们分析的重点 profile 为null load(location, name, profile);原创 2018-01-10 22:10:52 · 2821 阅读 · 0 评论 -
SpringBoot之浅析配置项解析(四)
我们在之前的文章中简单的说了一下SpringBoot对于默认的配置文件的解析过程,在这一篇文章中我们再简单的分析一下SpringBoot是怎么将解析到的配置属性信息设置到相应的Bean上的。既然是用SpringBoot的属性配置方式,那么我们在这里会在对应的类上加上ConfigurationProperties和Component(或是和Component相同功能的)注解。我们定义的Bean如下:@原创 2018-01-14 19:19:07 · 2536 阅读 · 0 评论 -
SpringBoot之浅析配置项解析(五)
在上一篇文章的结尾处我们简单的说了一下PropertiesConfigurationFactory中的bindPropertiesToTarget这个方法的内容,在这个方法中有这样的一段代码: //获取PropertyValues 重点要分析的PropertyValues propertyValues = getPropertySourcesPropertyValues(names,relaxed原创 2018-01-15 22:25:20 · 1829 阅读 · 0 评论 -
SpringBoot之浅析TomCat端口号设置
我们在之前的文章中说过怎么去修改TomCat的端口号(SpringBoot修改默认端口号),我们在这篇文章中简单的说一下SpringBoot是怎么实现修改TomCat端口号的。 修改TomCat的端口号大概可以分为这样的两类吧,一种是用配置项的方式,另一种是用程序实现的方式。配置项包含:设置命令行参数、系统参数、虚拟机参数、SpringBoot默认的application.properties(原创 2018-01-16 23:54:08 · 21907 阅读 · 4 评论 -
SpringBoot之浅析配置项解析(一)
在我们的开发工作总是离不了配置项相关的配置工作,SpringBoot也为我们提供了@ConfigurationProperties注解来进行配置项信息的配置工作,同时也提供了几个配置文件的默认加载位置,如:classpath:application.properties、classpath:application.yml、classpath:application.yaml、classpath:/原创 2018-01-07 15:39:22 · 3469 阅读 · 0 评论 -
SpringBoot之浅析配置项解析(二)
我们在上一篇文章中简单的说了一些SpringBoot配置属性相关的一些内容,我们在这篇文章中接着上一篇的文章继续进行分析。我们在上一篇文章中提到了这样一个类:ConfigFileApplicationListener,从类名来看的话这是一个配置文件应用监听器,这个类主要的一个作用是在 refresh context之前解析默认的配置文件。首先我们来看一下它的UML类图: ConfigFile原创 2018-01-08 22:11:55 · 948 阅读 · 0 评论 -
SpringBoot之@EnableConfigurationProperties分析
我们在用SpringBoot进行项目开发的时候,基本上都使用过@ConfigurationProperties这个注解,我们在之前的文章中也说过ConfigurationPropertiesBindingPostProcessor会对标注@ConfigurationProperties注解的Bean进行属性值的配置,但是我们之前没有说ConfigurationPropertiesBindingPo原创 2018-01-28 00:43:39 · 119396 阅读 · 20 评论 -
SpringBoot之集成SpringAOP分析
我们在之前的文章中简单的分析过SpringAOP和Spring的整合过程(Spring系列之Spring框架和SpringAOP集成过程分析(十)),我们在这篇文章中简单的分析一下SpringBoot整个SpringAOP的过程。 如果我们要在SpringBoot中使用SpringAOP我们需要哪些准备步骤呢?就一步:在你的应用中引入SpringBoot提供的aop-starter即可: ...原创 2018-09-02 23:52:28 · 1414 阅读 · 0 评论 -
SpringBoot源码分析之CommandLineRunner、ApplicationRunner
我们在之前的文章中简单的说过SpringBoot的CommandLineRunner和ApplicationRunner这两个接口 SpringBoot之CommandLineRunner接口和ApplicationRunner接口,这篇文章中我们从源码上简单的分析一下这两个 接口。在org.springframework.boot.SpringApplication#run()这个方法中有这样原创 2017-11-19 23:12:32 · 2130 阅读 · 0 评论 -
SpringBoot特性之Actuator
SpringBoot自动配置的特性,很大程度上解放了我们繁琐的配置的工作,但是也向我们屏蔽了很多内部运行 的细节,好在SpringBoot为我们提供了Actuator,Actuator在应用程序里提供了众多的Web端点,通过它 们,我们可以了解应用程序运行时的内部状况。我们可以了解Bean的组装信息,获取环境配置信息,等等 Actuator为我们提供了如下的一些端口 HTTP方法原创 2017-11-19 20:48:21 · 1218 阅读 · 0 评论 -
SpringBoot之开启Profile
我们在做项目开发的时候,生产环境和测试环境的一些配置可能会不一样,有时候一些功能也可能会不一样,所以我们可能会在上线的时候手工修改这些配置信息。但是Spring中为我们提供了Profile这个功能。我们只需要在启动的时候添加一个虚拟机参数,激活自己环境所要用的Profile就可以了。下面举个例子来说明一下:首先我们先创建一个bean,用来测试是不是从不同的配置文件中取的值。代码如下(省略get原创 2017-09-09 19:03:49 · 26088 阅读 · 1 评论 -
SpringBoot之集成Redis NoSql数据库
本篇文章只是简单的介绍一下SpringBoot集成Redis的使用(不包括Redis集群的使用),算是一篇入门文章吧。下面我们进入正题。前期准备我们现在pom.xml中引入redis的配置: org.springframework.data spring-data-redis原创 2016-08-21 15:51:05 · 1926 阅读 · 0 评论 -
SpringBoot之集成SpringDataRedis
Spring-Data-Redis项目(简称SDR)对Redis的Key-Value数据存储操作提供了更高层次的抽象,类似于Spring Framework对JDBC支持一样。关于Spring-Data-Reids的介绍请移步这里(http://docs.spring.io/spring-data/redis/docs/1.4.0.RELEASE/reference/html/ 和这里 http:原创 2016-08-21 22:30:31 · 9515 阅读 · 4 评论 -
创建你的第一个Spring Boot应用
Spring Boot应该是目前比较火的一个微服务的框架。所以我也来学习一下这个不算新的新东西,也算是追逐一下潮流。准备工作Spring Boot要求JDK1.7以上,Maven3.2以上。所以你首先要配置JDK1.7或者1.8的环境变量(我是用的1.8),然后配置Maven环境变量。至于怎么配置这两项请出门左转自行百度。安装Spring Boot CLISpring Boot C原创 2016-08-08 23:32:57 · 8863 阅读 · 5 评论 -
SpringBoot之退出服务(exit)时调用自定义的销毁方法
我们在工作中有时候可能会遇到这样场景,需要在退出容器的时候执行某些操作。SpringBoot中有两种方法可以供我们来选择(其实就是spring中我们常用的方式。只是destory-method是在XML中配置的,SpringBoot是去配置化。所以这里就不提这种方式了),一种是实现DisposableBean接口,一种是使用@PreDestroy注解。OK,下面我写两个例子看一下:Dispos原创 2016-08-14 14:20:03 · 43480 阅读 · 2 评论 -
SpringBoot加载静态资源
在SpringBoot中加载静态资源和在普通的web应用中不太一样。默认情况下,Spring Boot从classpath下一个叫/static(/public,/resources或/META-INF/resources)的文件夹或从ServletContext根目录提供静态内容。下面我们来写个例子看一下就会一目了然了:首先看一下项目的目录结构:我们在resources下面的temp原创 2016-11-30 23:24:27 · 31359 阅读 · 4 评论 -
SpringBoot热部署
在SpringBoot中启用热部署是非常简单的一件事,因为SpringBoot为我们提供了一个非常方便的工具spring-boot-devtools,我们只需要把这个工具引入到工程里就OK了,下面我就说一下怎么引入spring-boot-devtools。修改pom.xml我们只需要在pom.xml里,引入相应的jar包就行了。 org.spring原创 2016-12-02 00:40:28 · 48459 阅读 · 0 评论 -
SpringBoot之添加单元测试
在SpringBoot里添加单元测试是非常简单的一件事,我们只需要添加SpringBoot单元测试的依赖jar,然后再添加两个注解就可搞定了。首先我们来添加单元测试所需要的jar org.springframework.boot spring-boot-starter-test 接着我们写了一个单元测试的dem原创 2016-11-20 20:39:57 · 22218 阅读 · 0 评论 -
SpringBoot多跨域请求的支持(JSONP)
在我们做项目的过程中,有可能会遇到跨域请求,所以需要我们自己组装支持跨域请求的JSONP数据,而在4.1版本以后的SpringMVC中,为我们提供了一个AbstractJsonpResponseBodyAdvice的类用来支持jsonp的数据(SpringBoot接收解析web请求是依赖于SpringMVC实现的)。下面我们就看一下怎么用AbstractJsonpResponseBodyAdvic原创 2016-12-03 12:36:28 · 25869 阅读 · 11 评论 -
SpringBoot之集成Spring AOP
在开始之前,我们先把需要的jar包添加到工程里。新增Maven依赖如下: org.springframework.boot spring-boot-starter-aop 接下来,我们进入正题。这里的涉及的通知类型有:前置通知、后置最终通知、后置返回通知、后置异常通知、环绕通知,下面我们就具体的来看一下怎么在Spr原创 2016-11-20 15:09:55 · 53928 阅读 · 7 评论 -
SpringMVC解析JSON请求数据小析
这几年都在搞前后端分离、RESTful风格,我们项目中也在这样用。前几天有人遇到了解析JSON格式的请求数据的问题,然后说了一下解析的方式,今天就写篇文章简单的分析一下后台对于JSON格式请求数据是怎么解析的。先把例子的代码贴出来:前端 function testJSON() { $.ajax({ type: "POST",原创 2017-04-02 16:29:21 · 10812 阅读 · 0 评论 -
SpringBoot修改默认端口号
有时候我们可能需要启动不止一个SpringBoot,而SpringBoot默认的端口号是8080,所以这时候我们就需要修改SpringBoot的默认端口了。修改SpringBoot的默认端口有两种方式。下面就分别说一下这两种方式。修改application.properties第一种方式我们只需要在application.properties中加这样的一句话就可以了:server.port原创 2016-12-02 19:11:55 · 128030 阅读 · 6 评论 -
SpringBoot实现文件上传下载的功能
SpringBoot我们大多数的时候是当做服务提供者来使用的,但是在一些场景中还是要用到一些文件上传下载这种"非常规"操作的。那么怎么在SpringBoot中实现文件的上传下载功能呢?想象一些我们在SpringMVC中是怎么做的。我们需要在SpringMVC的配置文件中增加文件上传的Bean的配置,如下:然后在后台对应的处理方法中就可以直接获取到文件的输入流了。而对于SpringBoot来说,原创 2017-05-23 01:00:12 · 30088 阅读 · 8 评论 -
SpringBoot之集成SpringAOP分析(续)
这里我们先对上一篇文章的内容做一个总结,原谅我再次贴一下AopAutoConfiguration 这个类的代码@Configuration@ConditionalOnClass({ EnableAspectJAutoProxy.class, Aspect.class, Advice.class, AnnotatedElement.class })@ConditionalOnPropert...原创 2018-12-16 22:10:54 · 696 阅读 · 0 评论