对Spring Boot 的简短介绍,提供整个文档的一份快速阅读的地图,使用起来方便查找html
开始使用java
-
-
-
- 这里使用继承spring-boot-starter-parent项目的pom文件的方式、而后声明了一些依赖仓库与插件仓库
- 这里介绍了能够忽略版本号的依赖管理方式,是由于继承上述pom文件里面继承了spring.io,它会给出咱们最合适的版本。
- 这里出现了三个注解
@RestController
、@EnableAutoConfiguration
、@RequestMapping
和一个静态方法SpringApplication.run
下面的章节作点简单解释
- 这个注解是让springboot根据你的依赖猜测你通常会如何配置bean,好比你添加了一个spring-boot-starter-web 的依赖,使用这个注解就自动配置一个web项目
接下来又解释了全部官方Starters都能很好的被自动配置,但不只仅只有官方Starters能被自动配置。
- 这里的main方法就是传统java程序的main方法,经过调用SpringApplication的静态方法run来启动springboot项目
- 把全部Classpath中依赖+源代码都打包起来,在没有springboot的时候通常用uber这么干,如今能够直接在pom里面
标签中添加插件了
-
- 就是告诉你springboot帮你管理了大部分的依赖版本,你只须要声明依赖不用管版本,springboot会替你挑选合适版本,由于他们有一份BOM。
- 先介绍了一些继承spring-boot-starter-parent所提供的特性,注:在Spring配置文件中(properties文件或yml文件)支持占位符
${...}
,可是macen filtering 使用@..@
占位符,能够调用Maven属性resource.delimiter
来重写之
- 这里直接贴出了连接,Spring Boot’s Gradle plugin的文档
- 这里还介绍了starter的命名格式(若是本身写starter的话)、分三类介绍了经常使用的starters。
-
- 不要声明包,不声明包会致使全部class都在“默认”包下,这样会致使注解会扫描全部class
- 若是使用推荐的位置,则可使相应的注解免去配置,否则须要配置相应注解
- springboot支持使用java代码来配置,属于配置文件的类须要
@Configuration
来修饰
- 配置类没必要每个都使用
@Configuration
来修饰,也可使用@Import
来批量导入增长的配置类,还可使用@ComponentScan
注解来扫描Spring组件,包括配置类
- 只须要添加一个
@EnableAutoConfiguration
就自动认为对@Configuration
配置类自动配置
- 若是在配置类中配置了本身的bean,那么自动配置的相同做用的bean就会被替代(不过有些bean是本身写的,spring也不知道是否是同一种,这种替代只针对经常使用的依赖,因此仍是须要手动排除一下)
- 经过定义自动配置注解的属性,如
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
- 使用
@ComponentScan
注解来扫描对应的包发现beans,使用@Autowired
(构造器注入的方式)来自动装配bean,若是使用推荐的结构组织代码,则能够免去对@ComponentScan
注解属性的配置,若是一个bean只有一个构造器,那么@Autowired
也能够省略掉
- 使用
@SpringBootApplication
至关于同时使用 @Configuration
、@EnableAutoConfiguration
、@ComponentScan
这三个注解,注解配置为默认,同时该注解也提供对@EnableAutoConfiguration
、@ComponentScan
的个性化配置
-
- SpringBoot应用本质上是一个java应用,因此其热部署本质上是jvm的热部署,也就是在运行时替换相应的字节码来实现热部署,这里提到了一种完善的解决方案:JRebel。而spring提供的解决方案是
spring-boot-devtools
,实现quick restarts式的热部署
- 使用这个工具须要先引入依赖项
- 这里主要讲有一些默认属性如springMVC提供HTTP缓存,这个缓存能够在
application.properties
中配置,开发的时候并不但愿缓存被使用,spring-boot-devtools
会自动应用开发时配置。
-
spring-boot-devtools
会自动restart项目,这里还介绍了自动restart的条件,以及restart与reload技术上的区别,restart技术是使用两个类加载器实现,正在开发的类所使用的类加载器替换掉以前的类加载器,而reload是从新加载这个类的字节码
- 每次restart都会写一份日志,这里介绍如何关闭这个日志
- 排除restart不须要关注的目录
- 触发器文件,Trigger File。用来使项目在特定条件下restart,而不是改变一点源码就restart,这样能够避免使用IDE时持续编译正在编写的文件时形成项目不断restart的尴尬。
- 就是反序列化对象时要使用spring的
ConfigurableObjectInputStream
而不能使用ObjectInputStream
,不少第三方的类库反序列化时咩有考虑到context classloader
,因此会出问题.
- 启动时显示banner+log,很是炫酷 = =...
- 简单说就是使用特定的SpringApplication来run
- 有些listener能够被注册成为Bean,但这须要这些listener监听的事件发生在ApplicationContext初始化完成以后。若是这些listener不能被配置为bean,就须要看看这里了。
- 这里介绍了两种
ApplicationContext
,分别是AnnotationConfigApplicationContext
和AnnotationConfigServletWebServerApplicationContext
- 若是想访问传递给
SpringApplication.run(…)
方法的Arguments,能够注入一个org.springframework.boot.ApplicationArguments
Bean,能够对命令行选项进行访问。
- 在
SpringApplication.run(…)
方法执行后,让程序执行一次代码。经过实现ApplicationRunner or CommandLineRunner
接口来实现。这俩区别就在于对命令行选项的访问方式不一样。
- 退出的方法也是可编程的
- 外部配置有不少种的方式,这一节比较有用
- 这种配置有利于测试
- SpringApplication会加载这些文件并把配置载入
Environment
-
- 根据处于活动状态的指定配置文件的不一样,一个属性能够在YAML中被配置屡次
- 就是没法用
@PropertySource
注解加载
- 就是当指定配置文件处于活动状态时,让指定配置文件的同名List覆盖掉默认配置文件中的List
- 主要介绍
@ConfigurationProperties
注解的使用,使用该注解能够免去每一个属性都用@Value
的繁琐配置,而且这两个注解还有其余区别,以及配置文件能够被注册为一个bean,这些都在这一节阐述
-
@Value
是核心容器里面的功能,与类型安全(type-safe)配置不一样,没有其宽松的绑定方式和元数据支持,可是却有后者没有的SpEL表达式支持
- 前面说到指定配置文件,在这一节对指定配置文件有详细介绍。spring能够将配置文件分隔开使不一样的配置文件在特定的环境中发挥做用,好比生产环境的配置文件在生产环境中起做用。
@Profile
注解就是用来标注当前配置类是那个配置文件Part。使用属性spring.profiles.active
能够指定处于活动状态的配置文件Part有哪些。
-
spring.profiles.active
这个项目属性和其余属性同样遵照属性的优先级规则
-
-
-
- 这是springboot为springMVC提供的自动配置
- SpringMVC使用
HttpMessageConverter
接口转换HTTP请求和响应
- 从绑定的errors产生用来渲染错误信息的错误码,springboot有一个默认的实现
- 这边的注意颇有用----注:IntelliJ IDEA根据你运行应用的方式会对classpath进行不一样的排序。在IDE里经过main方法运行应用,跟从Maven,或Gradle,或打包好的jar中运行相比会致使不一样的顺序,这可能致使Spring Boot不能从classpath下成功地找到模板。若是遇到这个问题,你能够在IDE里从新对classpath进行排序,将模块的类和资源放到第一位。或者,你能够配置模块的前缀为classpath*:/templates/,这样会查找classpath下的全部模板目录。
-
-
-
-
-
-
- 使用Java基于Lucene开发的全文检索服务;是一个独立的企业级搜索应用服务器;lucene是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎。
- ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。
- Apache Cassandra是一套开源分布式数据库管理系统,混合型非关系数据库
- 仍是一个数据库
- LDAP (轻型目录访问协议)是一个开放的,中立的,工业标准的应用协议,经过IP协议提供访问控制和维护分布式信息的目录信息。
- 时间序列数据库
- spring框架对继承消息中间件(消息系统)提供强大支持
- javax.jms.ConnectionFactory接口提供标准的用于建立javax.jms.Connection的方法,javax.jms.Connection用于和JMS代理(消息中间件)交互
- 高级消息队列协议(AMQP)是一个用于消息中间件的,平台无关的,线路级(wire-level)协议
- JSR-303是一个验证标准,类路径上存在JSR-303实现(好比Hibernate validator),Bean Validation1.1支持的方法验证特性就会自动启用。这容许bean方法的参数和/或者返回值,被标注为javax.validation约束。也就是说对bean的方法参数与返回值进行验证
- Hazelcast 使得 Java 程序员更容易开发分布式计算系统,能够为基于jvm环境运行的各类应用提供分布式集群和分布式缓存服务:分布式”、“集群服务”、“网格式内存数据”、“分布式缓存“、“弹性可伸缩服务”
- Quartz调度器,定时任务.
- spring集成
- ava管理扩展(JMX)提供了一个标准的用于监控和管理应用的机制。默认状况下,Spring Boot将建立一个id为‘mbeanServer’的MBeanServer,并导出任何被Spring JMX注解(@ManagedResource,@ManagedAttribute,@ManagedOperation)的beans
-
- Spring Boot为内嵌的Tomcat(8和7),Jetty 9和Undertow提供WebSockets自动配置
- 这个在开发library时比较管用
这部分讲述spring对监控和管理生产环境中的应用的支持。git