Spring Boot 2系列(二十三):自动配置之@Conditional条件注解

  要理解 Spring Boot 的自动配置,就必须先理解 Spring 的 @Conditional注解,在自动配置类中常看到该注解的使用。

  该注解指定了在什么条件下创建 Bean 进行配置。 Spring Boot包含多个 @Conditional 注释,可以在@Configuration注解的类和@Bean注解方法中使用。

  @Conditional类型的注解,可以注解在类上,可以注解在Bean方法上,可以允许基于Spring Environment属性包含配置,可以仅允许在存在特定资源时包含配置。

  官方文档 -> Spring Boot自动配置之条件注解

  也可自定义,通过实现Condition接口,并重写其matches方法来构造判断条件。

阅读更多

Spring Boot 2系列(二十二):Web 静态资源,跨域,消息转换器,拦截器,监听器,过滤器等相关配置

  Spring Boot对 Web 项目提供了很好的支持,对视图解析、静态资源、格式化和转器器、消息转换器提供了自动配置,自动映射了静态首页。

  Web 相关自动配置在 Spring Boot 自动配置包(org.springframework.boot:spring-boot-autoconfigure.2.0.0.RELEASE)里 Web 路径下:org.springframework.boot.autoconfigure.web。在该路径下可以看到提供了Web相关的自动配置,如 RestTemplate, embedded(内嵌的应用服务器:jetty,tomcat,undertow), format,reactive,Servlet等。

阅读更多

Spring Boot 2系列(二十一):RestTemplate 远程调用 REST 服务

  互联网项目经常存在远程调用的情况,如果调用的是 REST 远程服务,可以使用 Spring Web 提供的RestTemplate.

  RestTemplate 是原始的 Spring REST 同步请求客户端,通过 HTTP 客户端提供更高级别的 API,使得调用 REST 端点变更更容易。

  Spring Boot 没有自动配置 RestTemplate,但自动注册了 RestTemplateBuilder Bean,用于构建 RestTemplate,并且 HttpMessageConverters 会自动应用到 RestTemplate 实例中。

  如果是 WebFlux 项目,可以使用 WebClient 来远程调用 REST 服务,相比 RestTemplate,WebClient 拥有更多的功能,并且是完全响应式, 后续再对 WebClient 进行详解。

  Spring Boot > Calling REST Services with RestTemplateSpring Framework > Using RestTemplate

阅读更多

Spring Boot 2系列(二十): 配置文件加载及参数绑定

  Spring Boot提倡的是零配置,提供了强大的自动配置功能;只要装配了相应的功能,默认就会启用通用的配置(习惯优于配置)。

  但实际开发中,除了默认的配置外,根据需求难免需要定制配置文件;SpringBoot默认的配置文件application.properties会被自动加载,但定制的配置文件则需要我们自己手动加载。

  SpringBoot加载配置文件是将文件内容读取到Spring容器中,目的是为了给Spring容器中的上下文对象调用,达到一次加载,随处调用。

阅读更多

Spring Boot 2系列(十九):Spring JDBC JdbcTemplate 集成与使用

  JdbcTemplate 是由 Spring Data JDBC 项目提供的,Spring Data JDBC 可以轻松实现基于 JDBC 的存储库,处理对基于 JDBC 的数据访问层的增强支持,

  Spring Boot 为使用 JDBC 提供了自动配置,将 JdbcTemplate 注册了为 Bean,自动配置了数据源,JDBC 自动配置类:org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration

  JdbcTemplate 类是 JDBC 核心包中的核心类,执行核心 JDBC 工作汉,简化了 JDBC 的使用。

  Spring Framework Documentation > Data Access with JDBCSpring Data JDBC 项目Spring Boot Using Jdbc Template

阅读更多

Spring Boot 2系列(十八):Spring Boot的测试

  Spring Boot,每次新建项目都会自动加上spring-boot-starter-test的依赖,同时在src/test/java生成当前项目的测试类。

  Spring Boot 的测试由两个模块提供支持:spring-boot-test 提供测试的核心功能,spring-boot-test-autoconfigure 提供测试的自动配置。

  Spring Boot 提供了 @SpringBootTest注解, 用于替换 spring-test 的 @ContextConfiguration注解, 该注解通过 SpringApplication 创建用于测试的 ApplicationContext, 就可以调用 Spring Boot 的功能。

  Spring Boot 关于使用 Mock 测试 Spring MVC 可以参考SpringMVC使用MockMvc和Junit进行单元测试官方文档-测试特性(boot-features-testing)

阅读更多

Spring Boot 2系列(十七):Docker部署Spring Boot应用

  现在的互联网应用系统在需要分布式部署时,会遇到环境配置的问题,在容器技术出来之前,需要在每台服务器系统上配置应用系统的运行环境,容易出错或环境不一致导致各种问题。

  容器技术的出现很好的解决了环境配置问题,配置一次应用运行环境,打成镜像,到处部署使用,当然还有其它的用途。

阅读更多

Spring Boot 2系列(十六):Spring Boot Admin - Actuator 监控管理 Web 框架

  Spring Boot 提供了 Actuator 组件来监控应用运行情况,而 Actuator 监控的端点返回的只是 json 格式的数据,可以集成 Spring Boot Admin 框架通过 UI 来展示数据。。

  Spring Boot Admin 组件包含 服务端客户端,服务端提供了 Web 视图页面包含了图表,可以更方便更直观的了解应用运行情况,客户端注册到服务端。

  GitHub > Spring Boot Admin ,Spring Boot Admin 2.1.4 参考指南2.0.5 参考指南 ,建议多看官网技术文档。

阅读更多

Spring Boot 2系列(附二):Spring Boot 2.0.2.RELEASE 官方参考指南目录(译)

  本篇是基于 Spring Boot 2.0.2.RELEASE 官方文档,对文档所有目录进行翻译。

  从目录中了解 Spring Boot 的总体框架和提供的功能特性。

  首先了解 Spring Boot 有那些东西(功能特性),能用来干什么(解决问题),再根据生产需要快速学习具体使用。当然有时间提前学习可以拿来即用是最好的,但往往没那么多时间和精力去研究每一项功能或特性的具体使用,研究了也不一定用的上,所以了解总体框架(拓宽知识广度),再按需导入技术也是不错的方法。

阅读更多