title: Spring Boot实战学习笔记5 tags:Spring Boot实战 grammar_cjkRuby: true
本文为学习Spring Boot实战的学习笔记,学习了一遍,但是好记性不如烂笔头,所以文章记录下来。图书购买地址为: https://item.jd.com/11894632.html.
Spring Boot实战学习笔记1
Spring Boot实战学习笔记2
Spring Boot实战学习笔记3
Spring Boot实战学习笔记4
Spring Boot实战学习笔记5
SpringBoot常用属性配置
Spring Integration是专门针对基于Spring的项目的安全框架. 安全框架有两个重要概念:认证(Authentication)和授权(Authorization). 认证即确认用户可以访问当前系统,授权即确定用户在当前系统下所拥有的功能权限. 需要注册特殊的DelegationfilterProy过滤器到WebApplication.开启@EnableWebSecurity.
org.springframework.boot.autoconfigure.security.SecurityProperties和org.springframework.boot.autoconfigure.security.SecurityProperties
依赖的包为:spring-boot-starter-security 源码: /ch9_1
处理大数据操作的一个框架,主要用来读取数据,然后进行一定处理后输出成指定的形式. 组成部分:
名称用途JobRepository用来注册的Job的容器JobLauncher用来启动Job的接口Job要实际执行的任务,包含一个或多个StepStepStep包括ItemReader,ItemProcessor,ItemWriterItemReader用来启动Job的接口ItemProcessor用来启动Job的接口ItemWriter用来启动Job的接口源码位于org.springframework.boot.autoconfigure.batch目录下.
依赖包: spring-boot-starter-batch. 源码位于: /ch9_2 Spring Batch 之 Spring Batch 简介(一) Spring Batch 之 Spring Batch 简介(二) Spring Batch 之 Spring Batch 简介(三) Spring Batch 之 Spring Batch 简介(四)
两个重要概念:消息代理(message broker)和目的地(destination).当消息发送者发送消息后,消息将有消息代理接管,消息代理保证消息传递到指定的目的地. 异步消息两种形式的目的地:队列(queue)和主题(topic).队列用于点对点式(point-to-point)的消息通信,主题用于发布/订阅式(publish/subscribe)的消息通信.
JMS(Java Message Service): Java消息服务,是基于JVM消息代理的规范,而ActiveMQ等是JMS消息代理的实现. AMQP(Advanced Message Queuing Protocol)也是消息代理规范,兼容JMS还支持跨语言和平台,RabbitMQ是AMQP的实现.
Spring对JMS和AMQP的支持分别为spring-jms和spring-rabbit.
消息规范类型JMSAMQPspring支持spring-jmsspring-rabbit连接消息代理JmsTemplateRabbitTemplate监听消息代理@JmsListener@RabbitListener开启注解@EnableJms@EnableRabbitJMS的自动配置在:org.springframework.boot.autoconfigure.jms目录下. ActiveMQ.
/ch9_3_4 ActiveMQ相关例子.
RabbitMQ:相关例子:/ch9_3_5
EIP(Enterprise Integration Patters,企业集成模式).解决不同系统之间交互的问题,通过异步消息来驱动达到系统交互时系统之间的松耦合. Spring Integration由:Message,Channel,Message Endpoint组成.
Message是用来不同部分之间传递的数据. 由消息体(payload)和消息头(header)组成.消息体可以是任何数据类型(XML,JSON,Jva对象).消息头表示的元数据解释消息体的内容.
消息发送者发送消息到通道(Channel),消息接受者从通道中接受消息.
顶级接口 MessageChannel 顶级接口 PollableChannel 可轮询 SubscribableChannel (可订阅)常用消息通道 PublishSubscribeChannel 允许广播消息给所有订阅者. QueueChannel 允许消息接受者轮训获得信息,用一个队列(queue)接受消息,队列的容量大小可配置. PriorityChannel 可按照优先级将数据存储到队列,依据消息的消息头priority属性. RendezvousChannel 确保每一个接受者都解说道消息后再发送消息. rendezvous(约会) DirectChannel 默认,允许将消息发送给为一个订阅者,然后阻碍发送直到消息被接受. ExecutorChannel 可绑定一个多线程task executor.通道拦截器 ChannelInterceptor 参考文章消息端点(Message EndPoint)是真正处理消息的(Message)组件,它还可以控制通道的路由.
Channel Adapter 通道适配器 是一种连接外部系统或传输协议的端点(EndPoint),可以分为入站(inbound)和出站(outbound). 通道适配器是单向的,入站通道适配器只支持接收消息,出站通道适配器只支持输出消息Gateway 消息网关 类似于Adapter,但是提供了双向的请求/返回集成方式,也分为入站(inbound)和出站(outbound).Spring Integration 对响应的Adapter都提供了Gateway.Service Activator 可调用Spring的Bean来处理消息,并将处理后的结果输出到指定的消息通道。Router 路由 可根据消息体内容(Payload Type Router)、消息头的值(Header Value Router) 以及定义好的接收表(Recipient List Router) 作为条件,来决定消息传递到的通道Filter 过滤器 类似于路由(Router),不同的是过滤器不决定消息路由到哪里,而是决定消息是否可以传递给消息通道。Splitter 拆分器 将消息拆分为几个部分单独处理,拆分器处理的返回值是一个集合或者数组Aggregator 聚合器与拆分器相反,它接收一个Java.util.List作为参数,将多个消息合并为一个消息。Enricher 当我们从外部获得消息后,需要增加额外的消息到已有的消息中,这时就需要使用消息增强器(Enricher)。消息增 强器主要有消息体增强器(Payload Enricher)和消息头增强器(Header Enricher)两种Transformer 转换器是对获得的消息进行一定的转换处理(如数据格式转换).Bridge 使用连接桥可以简单的将两个消息通道连接起来。通过IntegrationFlow来定义系统集成流程,通过IntegrationFlows和IntegrationFlowBuilder来实现使用FluentAPI.
源码:/ch9_4
模板引擎默认开启缓存,如果关闭
spring.thymeleaf.cache=false下载地址: http://repo.spring.io/release/org/springframework/springloaded/ 最新版:http://repo.spring.io/release/org/springframework/springloaded/1.2.7.RELEASE/springloaded-1.2.7.RELEASE.jar
VM arguments的参数值如下:
//其中路径为jar包所在路径,注意路径不要空格 -javaagent:D:/work/jars/springloaded-1.2.7.RELEASE.jar -noverify参考文章
收费的版本.暂时不试了.
maven 打包
mvn packagegradle 打包
build.gradle内容如下 apply plugin: 'jar' def buildTime = new Date().format("yyyyMMddHHmm") def buildDate = new Date().format("yyyyMMdd") jar { baseName = "myproject" //classifier = buildTime extension = "jar" } //执行命令 $ gradle task; $ gradle jar; //运行jar包 jar -jar myproject.jargradle 打包
build.gradle内容如下: apply plugin: 'jar' def buildTime = new Date().format("yyyyMMddHHmm") def buildDate = new Date().format("yyyyMMdd") war { baseName = "myproject" //classifier = buildTime extension = "jar" } //执行命令 $ gradle task; $ gradle war;详情看book吧.
Spring Boot有四大神器,分别是auto-configuration、starters、cli、actuator
http://blog.csdn.net/linxingliang/article/details/52263740 http://blog.csdn.net/dong_19890208/article/details/52836436
HTTP方法路径描述鉴权GET/actuator所有Endpoint的列表,需要加入spring HATEOAS的支持GET/autoconfig查看自动配置的使用情况trueGET/configprops查看配置属性,包括默认配置trueGET/beans查看bean及其关系列表trueGET/dump打印线程栈trueGET/env查看所有环境变量trueGET/env/{name}查看具体变量值trueGET/health查看应用健康指标falseGET/info查看应用信息falseGET/mappings查看所有url映射trueGET/metrics查看应用基本指标[metrics(度量)]trueGET/metrics/{name}查看具体指标truePOST/shutdown关闭应用trueGET/trace查看基本追踪信息true参考文章
自定义访问端点名称:
配置后可以通过http://localhost:8888/mybeans来访问beans endpoints.beans.id=mybeans //修改访问名称 配置后访问地址为http://localhost:8888/manager/actuator management.context-path=/manager //修改总访问地址 management.port=8888 //修改访问端口 management.port=-1 //关闭http访问spring中内置的HealthIndicator(健康指标)
名称描述DiskSpaceHealthIndicator检查低磁盘空间DataSourceHealthIndicator检查DataSource连接是否能获得ElasticsearchHealthIndicator检查ElasticSearch集群是否运行JmsHealthIndicator检查JMS消息代理服务器是否在运行MailHealthIndicator检查邮件服务器是否在运行MongoHealthIndicator检查MongoDB是否在运行RabbitHealthIndicator检查RabbitMQ是否在运行RedisHealthIndicator检查Redis是否正常运行SolrHealthIndicator检查Solr是否正常运行java内置的jconsole,通过cmd来执行只有,然后选择java进程,随后查看
项目中依赖Romote Shell(spring-boot-starter-remote-shell),启动之后控制台会有连接密码.通过ssh连接工具连接(用户名为user).
常用linux命令 help metrics endpoint list endpoint invoke health //自定义ssh连接的用户及密码,在application.properties中 shell.auth.simple.user.name=username shell.auth.simple.user.password=123456 自定义命令 /ch11_3Config Server
Netflix OSS的Eureka
@EnableEurekaServer //服务端 @EnableEurekaClient //客户端Zuul
@EnableZuulProxyRibbon和Feign
@FeignClient源码/ch12
Spring Cloud和Docker会另外学习.此处略过.
