Spring Boot 2系列(二十四):内嵌Tomcat SSL配置

  现在https的请求链接已非常普遍了,https可理解为 http的安全版,是基于 http 下加入了SSL(Secure Sockets Layer 安全套接层)层,为数据通讯提供安全支持。

  SSL 配置是基于服务端的,Nginx 和 Tomcat 都可以配置 SSL,SSL证书可以自己通过JDK工具生成,也可以购买认证的证书。

  SSL 协议可分为两层: SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。 SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等(- -百度百科)。

  Java Web 项目的部署环境通常在 Servlet容器(Tomcat)外面一层使用 Nginx 来做返向代理,在 Nginx 服务器里面配置 SSL 并将 HTTP 重定向到 HTTPS,或者在 Tomcat 容器里配置 SSL,将HTTP 请求重定向 到 HTTPS。

  本篇针对 Spring Boot 内嵌 Tomcat 配置 SSL 进行讲解,实际使用可能并不多,但可以了解Spring Boot 内嵌 Tomcat 对 SSL 的支持和配置。

阅读更多

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等。

阅读更多

zTree加载树形节点(父子菜单,省市区)

后台管理系统经常要用到树形插件来展示具有父子关系的功能,如父子菜单,省市区关系等;还有通过树形插件节点的勾选来设置用户与菜单权限的关联,或某些功能与省市区的关联。

zTree在树形节点的展示上用的是比较多的,支持 JSON 数据,可灵活编辑(增/删/改/查)功能。

zTree官网:http://www.treejs.cn/v3/main.php#_zTreeInfo

阅读更多

业务实践系列(2):后台管理系统加载动态权限菜单

Web管理后台绝大部分都会有左侧导航菜单功能,同时使用管理后台会有多组用户,每组用户所拥有的菜单权限是存在差异的,这就涉及到用户角色权限。

系统在设计时就需要考虑用户,角色,菜单三者之间的关系。如果一个用户有多种角色,则至少涉及5张表,如果一个用户只属于一种角色,则会涉及4张表。

阅读更多

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)

阅读更多