略过html
2.1 Bean的scope前端
使用@Scope注解配置scope.默认signleton,原型模式prototype
spring
2.2 Spring EL和资源调用
支持在xml和注解中使用表达式,须要@PropertySource注解指定文件docker
2.3 Bean的初始化和销毁
使用@Bean(intiMethod="init",destroyMethod="destroy")指定初始化方法和销毁前执行方法。shell
使用@Bean配合类内部@PostConstruct,@PreDestroy指定初始化方法和销毁前执行方法。后端
2.4 项目Profile
在容器启动时指定profile(spring.profiles.active),@Bean在实例化时经过@Profile("xxx")指定实例化特定的示例。浏览器
2.5 事件(Application Event)
Spring事件为Bean和Bean之间消息通讯提供支持。如当一个Bean处理完任务后,但愿通知另外一个Bean作业务处理。
1) 自定义事件,继承ApplicationEvent 如DemoEvent extends ApplicationEvent
2) 定义监听器,实现ApplicationListener 如DemoListener immplements ApplicationListener
3) 使用容器发布事件 如在DemoPublisher中定义方法调用applicationContext.publishEvent(event)缓存
3.1 Spring Aware安全
当Bean须要使用容器自己的功能资源时,经过Spring aware调用容器资源。但使用了spring aware后bean和spring框架将耦合springboot
BeanNameAware 获取到容器中bean的名称
BeanFactoryAware 获取当前bean的facory
ApplicationContextAware 当前的applicationContext
ApplicationEventPublisherAware 应用事件发布器 与applicationContext.publishEvent效果相同
ResourceLoaderAware 获取资源加载器,可用来加载外部资源
注:实现ApplicationContextAware可知足以上全部服务,但原则上使用到什么就实现什么接口
3.2
9.1 Spring Security
专门针对基于Spring的项目的安全框架,充分利用了依赖注入和AOP来实现安全功能
安全框架有两个重要概念:认证和受权
9.2 批处理Spring Batch
Spring Batch是用来处理大量数据操做的框架,主要用来读取大量数据,而后进行必定处理后输出指定的形式
9.3 消息队列
异步消息中有两个重要概念:即消息代理(message brocker)和目的地(destination)。当消息发送者发送消息后,消息将由broker接管,broker保证消息传递到指定的目的地。
消息队列主要有两种形式
队列queue:队列用于点对点式消息通讯,确保每一条消息只有惟一的发送者和接收者。
主题topic:主题用于发布/订阅模式的消息通讯,消息发送者发送消息到topic,多个消息接受者监听这个主题
JMS即JAVA消息服务,是基于JVM消息代理的规范,ActiveMQ是JMS规范的一种实现。
AMQP是另外一种消息代理规范,兼容JMS,支持跨语言和平台。RabbitMQ是AMQP规范的一种实现
10.1 热部署
在使用模板开发前端页面时,模板引擎默认开启缓存,此时修改页面代码刷新后页面上不能即时生效,能够在application.properties配置文件中关闭模板引擎缓存:
spring.thymeleaf.cache=false
spring.freemarker.cache=false
spring.groovy.template.cache=false
spring.velocity.cache=false
后端代码热部署:①使用Spring Loaded插件,须要在项目启动时指定vm启动参数
②使用JRebel
③使用spring-boot-devtools,项目中添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
10.2 部署方式
支持以jar和war方式部署,支持以系统服务的方式运行jar包
10.3 云部署
使用docker部署应用(本书实例是docker+docker-compose)
10.4 测试
在SpringBoot中使用@SpringApplicationConfiguration来配置Application Context
事例:
@RunWith(SpringRunner.class)
@SpringBootTest
springboot提供了一系列的端点监控项目,端点能够在yml或properties配置文件中进行开启和关闭;
自定义端点:须要继承AbstractEndpoint,是用注解@ConfigurationPropertis(prefix="endpoint.xxx")支持能够在配置文件中经过endpoint.xxx配置端点
11.1 http方式监控
经过在项目中集成依赖,来支持端点
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.hateoas</groupId> <artifactId>spring-hateoas</artifactId> <version>0.17.0.RELEASE</version> </dependency>
经过浏览器访问 http://ip:port/actuator/便可查看全部暴露出来的端点
注意:springboot 1.x 与springboot 2.x有部分差异(访问路径等)
11.2 JMX方式
使用jconsole监控项目,如需监控服务器上的应用须要远程链接
11.3 SSH方式(在2.x版本中已废弃)
在pom文件中依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-remote-shell</artifactId> </dependency>
在项目启动时会在控制台打印除ssh的登陆密码,使用ssh客户端工具链接便可