第一部分 Spring 4.x

1. Spring基础

  略过

2. Spring常用配置

  2.1 Bean的scope

    使用@Scope注解配置scope.默认signleton,原型模式prototype

  2.2 Spring EL和资源调用
    支持在xml和注解中使用表达式,需要@PropertySource注解指定文件

  2.3 Bean的初始化和销毁
    使用@Bean(intiMethod="init",destroyMethod="destroy")指定初始化方法和销毁前执行方法。

    使用@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. Spring常用配置

  3.1 Spring Aware

    当Bean需要使用容器本身的功能资源时,通过Spring aware调用容器资源。但使用了spring aware后bean和spring框架将耦合

    BeanNameAware  获取到容器中bean的名称

    BeanFactoryAware  获取当前bean的facory

    ApplicationContextAware  当前的applicationContext

    ApplicationEventPublisherAware   应用事件发布器 与applicationContext.publishEvent效果相同

    ResourceLoaderAware   获取资源加载器,可用来加载外部资源

    注:实现ApplicationContextAware可满足以上所有服务,但原则上使用到什么就实现什么接口

  3.2

9. 企业级开发

  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. 开发部署与测试

  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

11.应用监控

  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客户端工具连接即可

                                                                                                                                          

《Spring Boot 实战》随记的更多相关文章

  1. spring boot实战(第十三篇)自动配置原理分析

    前言 spring Boot中引入了自动配置,让开发者利用起来更加的简便.快捷,本篇讲利用RabbitMQ的自动配置为例讲分析下Spring Boot中的自动配置原理. 在上一篇末尾讲述了Spring ...

  2. spring boot实战(第十二篇)整合RabbitMQ

    前言 最近几篇文章将围绕消息中间件RabbitMQ展开,对于RabbitMQ基本概念这里不阐述,主要讲解RabbitMQ的基本用法.Java客户端API介绍.spring Boot与RabbitMQ整 ...

  3. 《spring boot 实战》读书笔记

    前言:虽然已经用spring boot开发过一套系统,但是之前都是拿来主义,没有系统的,全面的了解过这套框架.现在通过学习<spring boot实战>这本书,希望温故知新.顺便实现自己的 ...

  4. Spring Boot实战系列-----------邮件发送

    快速导航 添加Maven依赖 配置文件增加邮箱相关配置 Service.Test项目代码构建 五种邮件发送类型讲解 文本邮件 html邮件 附件邮件 html内嵌图片邮件 模板邮件 问题汇总 添加ma ...

  5. Spring Boot 实战与原理分析视频课程

    Spring Boot 实战与原理分析视频课程 链接:https://pan.baidu.com/share/init?surl=PeykcoeqZtd1d9lN9V_F-A 提取码: 关注公众号[G ...

  6. spring boot实战(第一篇)第一个案例

    版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[+]   spring boot实战(第一篇)第一个案例 前言 写在前面的话 一直想将spring boot相关内容写成一个系列的 ...

  7. [转] Spring Boot实战之Filter实现使用JWT进行接口认证

    [From] http://blog.csdn.net/sun_t89/article/details/51923017 Spring Boot实战之Filter实现使用JWT进行接口认证 jwt(j ...

  8. 9.Spring Boot实战之配置使用Logback进行日志记录

    转自:https://blog.csdn.net/meiliangdeng1990/article/details/54300227 Spring Boot实战之配置使用Logback进行日志记录 在 ...

  9. Spring Boot实战之定制URL匹配规则

    本文首发于个人网站:Spring Boot实战之定制URL匹配规则 构建web应用程序时,并不是所有的URL请求都遵循默认的规则.有时,我们希望RESTful URL匹配的时候包含定界符". ...

  10. Spring Boot实战之定制type Formatters

    本文首发于个人网站:Spring Boot实战之定制type Formatters 前面我们有篇文章介绍了PropertyEditors,是用来将文本类型转换成指定的Java类型,不过,考虑到Prop ...

随机推荐

  1. 01 Servlet & Jsp 技术概述

    Servlet 介绍 servlet 是运行在web服务器或应用服务器上的java程序, 它是一个中间层, 负责连接来自web浏览器或其他http客户端的请求和HTTP服务器上的数据库或应用程序. 为 ...

  2. easyui menu 添加hideItem/showItem 方法

    $.extend($.fn.menu.methods,{ showItem:function(jq,text){ return jq.each(function(){ var item = $(thi ...

  3. ChemDraw绘制苯甲酸钠的生成反应式的方法

    苯甲酸钠是苯甲酸的钠盐,就用途来说苯甲酸主要用于制作杀真菌剂,苯甲酸钠则是用于食物或软饮料中的主要商品防腐剂,其防腐最佳PH是2.5-4.0,苯甲酸钠的亲油性也很大,易穿透细胞膜进入细胞体内.苯甲酸钠 ...

  4. 维纳滤波和编码曝光PSF去除运动模糊【matlab】

    编码曝光知识 - ostartech - 博客园 https://www.cnblogs.com/wxl845235800/p/8276362.html %%%%%%%%%%%%%%%%%%%%%%% ...

  5. 【链接】LINUX SHELL脚本攻略笔记[速查]

    LINUX SHELL脚本攻略笔记[速查]

  6. Python_selenium封装一个浏览器引擎类

    Python_selenium封装一个浏览器引擎类 现在我们在编写一个类,叫浏览器引擎类(此例为:启动浏览器),将文件名命名为browser.py,代码下面通过更改一个字符串的值,运用if语句判断和控 ...

  7. lighttpd mysql php简单教程

    lighttpd mysql php简单教程 lighttpd+php5+mysql+Debian etch lighttpd是速度最快的静态web server,mysql最通用的的database ...

  8. Python实现生命游戏

    1. 生命游戏是什么 生命游戏是英国数学家约翰·何顿·康威在1970年发明的细胞自动机.它包括一个二维矩形世界,这个世界中的每个方格居住着一个活着的或死了的细胞.一个细胞在下一个时刻生死取决于相邻八个 ...

  9. memcache的内存管理机制

    Memcache使用了Slab Allocator的内存分配机制:按照预先规定的大小,将分配的内存分割成特定长度的块,以完全解决内存碎片问题Memcache的存储涉及到slab,page,chunk三 ...

  10. EF 更新操作 lambda解释+=

    我曾写过一个EF批量更新.删除的博客,后来操作的过程中经常遇到更新字段,但是要在原来的基础上计算的情况,我就先去获取一遍数据然后再计算,最后再去更新,显然这个操作是很复杂的 var guest = d ...