学习Spring Boot
文章平均质量分 74
学习Spring Boot 过程与思考
KronChan
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
学习Spring Boot:(一)入门
微服务现在微服务越来越火了,Spring Boot热度蹭蹭直升,自学下。 微服务其实是服务化思路的一种最佳实践方向,遵循SOA(面向服务的架构)的思路,各个企业在服务化治理上面的道路已经走得很远了,整个软件交付链上各个环节的基础设施逐渐成熟了,微服务就诞生了。 微服务给我们也带来了很多挑战,服务“微”化之后,一个显著的特征就是服务的数量增多了。如果将软件开发和交付也作为一种生...原创 2018-05-05 09:57:19 · 1541 阅读 · 5 评论 -
学习Spring Boot:(二)启动原理
前言主要了解前面的程序入口 @@SpringBootApplication 这个注解的结构。正文参考《SpringBoot揭秘 快速构建微服务体系》第三章的学习,总结下。SpringBootApplication背后的秘密@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@...原创 2018-05-05 09:59:32 · 1248 阅读 · 0 评论 -
学习Spring Boot:(三)配置文件
前言Spring Boot使用习惯优于配置(项目中存在大量的配置,此外还内置了一个习惯性的配置,让你无需手动进行配置)的理念让你的项目快速运行起来。正文使用配置文件注入属性Spring Boot 默认的配置文件src/main/java/resources/application.properties或者src/main/java/resources/application.y...原创 2018-05-05 10:00:37 · 758 阅读 · 0 评论 -
学习Spring Boot:(四)应用日志
前言应用日志是一个系统非常重要的一部分,后来不管是开发还是线上,日志都起到至关重要的作用。这次使用的是 Logback 日志框架。正文Spring Boot在所有内部日志中使用Commons Logging,但是默认配置也提供了对常用日志的支持,如:Java Util Logging,Log4J, Log4J2和Logback。每种Logger都可以通过配置使用控制台或者文件输出日...原创 2018-05-05 10:01:33 · 833 阅读 · 1 评论 -
学习Spring Boot:(五)使用 devtools热部署
前言 spring-boot-devtools 是一个为开发者服务的一个模块,其中最重要的功能就是自动应用代码更改到最新的App上面去。原理是在发现代码有更改之后,重新启动应用,但是比速度比手动停止后再启动还要更快,更快指的不是节省出来的手工操作的时间。其深层原理是使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLo...原创 2018-05-05 10:02:21 · 2265 阅读 · 0 评论 -
学习Spring Boot:(六) 集成Swagger2
前言Swagger是用来描述和文档化RESTful API的一个项目。Swagger Spec是一套规范,定义了该如何去描述一个RESTful API。类似的项目还有RAML、API Blueprint。 根据Swagger Spec来描述RESTful API的文件称之为Swagger specification file,它使用JSON来表述,也支持作为JSON支持的YAML。Swag...原创 2018-05-05 10:03:22 · 1872 阅读 · 3 评论 -
学习Spring Boot:(七)集成Mybatis
前面都是用的是spring data JPA,现在学习下Mybatis,而且现在Mybatis也像JPA那样支持注解形式了,也非常方便,学习一下。数据库 mysql 5.7添加依赖在pom文件中添加:<mybatis.version>1.3.1</mybatis.version><druid.version>1.1.3</drui...原创 2018-05-05 10:04:25 · 701 阅读 · 2 评论 -
学习Spring Boot:(八)Mybatis使用分页插件PageHelper
首先Mybqtis可以通过SQL 的方式实现分页很简单,只要在查询SQL 后面加上limit #{currIndex} , #{pageSize}就可以了。本文主要介绍使用拦截器的方式实现分页。实现原理拦截器实现了拦截所有查询需要分页的方法,并且利用获取到的分页相关参数统一在sql语句后面加上limit分页的相关语句,从而达到SQL 分页的目的,它的好处不用多说了,代码也写的很少,对S...原创 2018-05-05 10:05:14 · 2157 阅读 · 0 评论 -
学习Spring Boot:(九)统一异常处理
前言开发的时候,每个controller的接口都需要进行捕捉异常的处理,以前有的是用切面做的,但是SpringMVC中就自带了@ControllerAdvice ,用来定义统一异常处理类,在 SpringBoot 中额外增加了 @RestControllerAdvice。使用创建全局异常处理类通过使用 @ControllerAdvice 或者 @RestControllerAd...原创 2018-05-05 10:06:01 · 1453 阅读 · 3 评论 -
学习Spring Boot:(十)使用hibernate validation完成数据后端校验
前言后台数据的校验也是开发中比较注重的一点,用来校验数据的正确性,以免一些非法的数据破坏系统,或者进入数据库,造成数据污染,由于数据检验可能应用到很多层面,所以系统对数据校验要求比较严格且追求可变性及效率。了解了解一点概念性的东东。 * JSR 303 是 Java 为 Bean 数据合法性校验提供的标准框架,它已经包含在 JavaEE 6.0 中 。 * Hibernate Va...原创 2018-05-05 10:07:02 · 3029 阅读 · 4 评论 -
学习Spring Boot:(十一) 自定义装配参数
前言SpringMVC 中 Controller 中方法的参数非常灵活,得益于它的强大自动装配,这次将根据上次遗留下的问题,将研究下装配参数。正文SpringMVC中使用了两个接口来处理参数: * HandlerMethodArgumentResolver 处理方法请求参数; * HandlerMethodReturnValueHandler 处理方法的返回参数。这里我们将...原创 2018-05-06 10:18:04 · 823 阅读 · 0 评论 -
学习Spring Boot:(十二)Mybatis 中自定义枚举转换器
前言在 Spring Boot 中使用 Mybatis 中遇到了字段为枚举类型,数据库存储的是枚举的值,发现它不能自动装载。解决内置枚举转换器MyBatis内置了两个枚举转换器分别是:org.apache.ibatis.type.EnumTypeHandler 和 org.apache.ibatis.type.EnumOrdinalTypeHandler。EnumT...原创 2018-05-06 10:18:52 · 1156 阅读 · 2 评论 -
学习Spring Boot:(十三)配置 Shiro 权限认证
经过前面学习 Apache Shiro ,现在结合 Spring Boot 使用在项目里,进行相关配置。正文添加依赖在 pom.xml 文件中添加 shiro-spring 的依赖: <dependency> <groupId>org.apache.shiro</groupId> ...原创 2018-05-06 10:19:08 · 2336 阅读 · 0 评论 -
学习Spring Boot:(十四)spring-shiro的密码加密
前言前面配置了怎么使用 shiro ,这次研究下怎么使用spring shiro的密码加密,并且需要在新增、更新用户的时候,实现生成盐,加密后的密码进行入库操作。正文配置凭证匹配器 @Bean public HashedCredentialsMatcher hashedCredentialsMatcher() { HashedCredent...原创 2018-05-06 10:20:42 · 6172 阅读 · 2 评论 -
学习Spring Boot:(十五)使用Lombok来优雅的编码
前言 Lombok 是一种 Java™ 实用工具,可用来帮助开发人员消除 Java 的冗长,尤其是对于简单的 Java 对象(POJO)。它通过注解实现这一目的。正文添加依赖在 pom.xml 文件中添加相关依赖:<lombok.version>1.16.20</lombok.version><!-- https://mvnrep...原创 2018-05-06 10:21:33 · 820 阅读 · 2 评论 -
学习Spring Boot:(十六)使用Shiro与JWT 实现认证服务
前言需要把Web应用做成无状态的,即服务器端无状态,就是说服务器端不会存储像会话这种东西,而是每次请求时access_token进行资源访问。这里我们将使用 JWT 1,基于散列的消息认证码,使用一个密钥和一个消息作为输入,生成它们的消息摘要。该密钥只有服务端知道。访问时使用该消息摘要进行传播,服务端然后对该消息摘要进行验证。认证步骤客户端第一次使用用户名密码访问认证服务器,服务...原创 2018-05-06 10:22:40 · 18384 阅读 · 2 评论 -
学习Spring Boot:(十七)Spring Boot 中使用 Redis
前言 Redis 1 是一个由Salvatore Sanfilippo写的key-value存储系统。 edis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合...原创 2018-05-06 10:23:33 · 473 阅读 · 0 评论 -
学习Spring Boot:(十八)Spring Boot 中session共享
前言前面我们将 Redis 集成到工程中来了,现在需要用它来做点实事了。这次为了解决分布式系统中的 session 共享的问题,将 session 托管到 Redis。正文引入依赖除了上篇文章中引入 spring-boot-starter-data-redis,还需要 spring-session 依赖: <dependency> ...原创 2018-05-06 10:24:22 · 546 阅读 · 0 评论 -
学习Spring Boot:(十九)Shiro 中使用缓存
前言在 shiro 中每次去拦截请求进行权限认证的时候,都会去数据库查询该用户的所有权限信息, 这个时候就是有一个问题了,因为用户的权限信息在短时间内是不可变的,每次查询出来的数据其实都是重复数据,没必要每次都去重新获取这个数据,统一放在缓存中进行管理,这个时候,我们只需要获取一次权限信息,存入到缓存中,待缓存过期后,再次重新获取即可。例如,我执行一个查询多次,它执行多次权限查询。 ...原创 2018-05-06 10:25:04 · 439 阅读 · 0 评论 -
学习Spring Boot:(二十)使用 MongoDB
前言 MongoDB 1 是可以应用于各种规模的企业、各个行业以及各类应用程序的开源数据库。基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种。正文Spring Boot 对 MongoDB 的数据源操作进行了封装。加入依赖...原创 2018-05-06 10:25:48 · 460 阅读 · 0 评论 -
学习Spring Boot:(二十一)使用 EhCache 实现数据缓存
前言当多次查询数据库影响到系统性能的时候,可以考虑使用缓存,来解决数据访问新能的问题。 SpringBoot 已经为我们提供了自动配置多个 CacheManager 的实现,只要去实现使用它就可以了。一般的系统都是优先使用 EhCache,它工作在 JAVA 进程中,在传统的应用没有太大要求的时候,使用它比较方便,分布式系统中去使用 Shiro 集中管理缓存。正文加入依赖...原创 2018-05-07 16:03:17 · 535 阅读 · 0 评论 -
学习Spring Boot:(二十二)使用 AOP
前言 AOP 1,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。基于AOP实现的功能不会破坏原来程序逻辑,因此它可以很好的对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。正文Spring Boot 中使用在 pom.xml 中加入 aop 依赖: ...原创 2018-05-07 16:05:21 · 633 阅读 · 0 评论 -
学习Spring Boot:(二十三)Spring Boot 中使用 Docker
前言简单的学习下怎么在 Spring Boot 中使用 Docker 进行构建,发布一个镜像,现在我们通过远程的 docker api 构建镜像,运行容器,发布镜像等操作。这里只介绍两种方式:远程命令 api (需要知道 Docker 命令)maven 插件 (不需要了解 Docker 命令)开启 Docker api 远程访问开启 docker api 远程操作的功能,...原创 2018-05-07 16:07:01 · 1526 阅读 · 0 评论 -
学习Spring Boot:(二十四)多数据源配置与使用
前言随着业务量增大,可能有些业务不是放在同一个数据库中,所以系统有需求使用多个数据库完成业务需求,我们需要配置多个数据源,从而进行操作不同数据库中数据。正文JdbcTemplate 多数据源配置需要在 Spring Boot 中配置多个数据库连接,当然怎么设置连接参数的 key 可以自己决定, 需要注意的是 Spring Boot 2.0 的默认连接池配置参数好...原创 2018-05-07 16:07:54 · 728 阅读 · 0 评论 -
学习Spring Boot:(二十五)使用 Redis 实现数据缓存
前言由于 Ehcache 存在于单个 java 程序的进程中,无法满足多个程序分布式的情况,需要将多个服务器的缓存集中起来进行管理,需要一个缓存的寄存器,这里使用的是 Redis。正文当应用程序要去缓存中读取数据,但是缓存中没有找到该数据,则重新去数据库中获取数据,然后将数据存入缓存中。 还有当我们需要更新或者删除缓存中的数据时候,需要让缓存失效。配置在系统配置文...原创 2018-05-07 16:08:52 · 549 阅读 · 0 评论 -
学习Spring Boot:(二十六)使用 RabbitMQ 消息队列
前言前面学习了 RabbitMQ 基础,现在主要记录下学习 Spring Boot 整合 RabbitMQ ,调用它的 API ,以及中间使用的相关功能的记录。相关的可以去我的博客/RabbitMQ正文我这里测试都是使用的是 topic 交换器,Spring Boot 2.0.0, jdk 1.8配置Spring Boot 版本 2.0.0 在 pom.xml 文件中...原创 2018-05-07 16:10:22 · 901 阅读 · 0 评论 -
学习Spring Boot:(二十七)Spring Boot 2.0 中使用 Actuator
前言主要是完成微服务的监控,完成监控治理。可以查看微服务间的数据处理和调用,当它们之间出现了异常,就可以快速定位到出现问题的地方。springboot - version: 2.0正文依赖maven 项目 在 pom.xml 文件中加入 actuator 的依赖:<dependency> <groupId>org.spri...原创 2018-05-07 16:10:35 · 27424 阅读 · 0 评论 -
学习Spring Boot:(二十八)Spring Security 权限认证
前言主要实现 Spring Security 的安全认证,结合 RESTful API 的风格,使用无状态的环境。主要实现是通过请求的 URL ,通过过滤器来做不同的授权策略操作,为该请求提供某个认证的方法,然后进行认证,授权成功返回授权实例信息,供服务调用。基于Token的身份验证的过程如下:用户通过用户名和密码发送请求。程序验证。程序返回一个签名的token 给客户端。...原创 2018-05-07 16:13:00 · 11942 阅读 · 3 评论 -
学习 Spring Boot:(二十九)Spring Boot Junit 单元测试
前言JUnit 是一个回归测试框架,被开发者用于实施对应用程序的单元测试,加快程序编制速度,同时提高编码的质量。JUnit 测试框架具有以下重要特性:测试工具测试套件测试运行器测试分类了解 Junit 基础方法加入依赖在 pom.xml 中加入依赖:<dependency> <groupId>junit</grou...原创 2018-05-07 16:14:16 · 157722 阅读 · 8 评论