unanao's Blog

用心感知世界之美

Spring Boot使用

Spring Boot的主要功能和使用

Spring boot用于快速构建可以独立运行的Spring应用程序。用来执行应用程序所需的各种后勤工作,我们只需要专注应用程序的代码。没有配置,没有web.xml, 没有应用服务器。 自动配置: 针对spring应用程序常见的应用功能,Spring boot能自动提供相关配置 起步依赖: 告诉Spring boot需要什么功能,它就能引入需要的库。 命令行界面:Spring...

Spring boot中使用缓存

本地缓存Caffeine和分布式缓存Redis的使用方法

这篇文章写的太好了,放在最开始,先看完这篇文章再往下看:https://juejin.im/post/5b849878e51d4538c77a974a 在使用缓存之前,需要确认你的项目是否真的需要缓存。使用缓存会引入的一定的技术复杂度,后文也将会一一介绍这些复杂度。一般来说从两个方面来个是否需要使用缓存: CPU占用:如果你有某些应用需要消耗大量的cpu去计算,比如正则表达式,如果你使用...

使用feign开发http客户端

Spring cloud feign的使用方法

1. 说明 微服务架构中,业务功能的提供者,提供rest接口的同时, 一般会提供接口的jar包,简化其他服务调用。使用Feign作为http客户端,调用远程的http接口就会变得像调用本地方法一样简单。 Feign是一个声名式的web服务客户端,它让写web服务的客户端更容易。在使用Feign时,Spring Cloud通过集成integrates Ribbon和Eureka提供负载均衡...

构建Spring web 应用程序

Spring MVC, MapStruct

请求从客户端发起,经过Spring MVC中的组件,最终再返回到客户端。WEB请求的工作类似快递投递,只是投递的不是快递而是信息,将信息从一个地方投递到另一个地方。 1 MapStruct 1.1 安装Idea MapStruct Support插件 写MapStruct Mapper的时候,可以进行友好的提示。 可以通过Idea的marketplace搜索安装,也可以去官网下载后,...

Spring AOP

Spring面向切面编程的实现原理和使用方法

AOP是把切面应用到目标对象并创建新的代理对象的过程,可以在目标生命周期的多个点织入切面(aspect)。 编译器: 切面在目标编译期织入。这种方法需要特殊的编译器,AspectJ的织入编译器就是以这种方式织入的。 类加载期: 切面在目标类加载到JVM时被织入,这种方式需要特殊的类加载器(ClassLoader), 它可以在目标类被引入之前增强该目标类的字节码。AspectJ5的...

Spring 依赖注入

依赖注入大的优点和Spring中使用依赖注入

Spring的目标是致力于全方位简化Java开发。为了降低Java开发的复杂性,Spring采取了一下4种关键策略: 基于POJO的轻量级和最小侵入性编程; 通过依赖注入和面向接口实现松耦合; 基于切面和惯例进行声名式编程; 通过切面和模板减少样板式代码。 一定程度的耦合是必须的——完全没有耦合的代码什么也做不了。为了完成有意义的功能,不同的类必须以适当的方式进行交互。...

Spring boot swagger 编写文档

通过注解在代码中编写文档的方法

1. swagger Swagger作为文档比较流行的方式,文档和代码写在一起还是比较方便维护的。在spring boot中可以通过springfox写注解式的文档。 springfox的文档地址: http://springfox.github.io/springfox/docs/current/ , 下文主要将常用的功能进行解释说明,同时增加导出html和pdf的方法。 2. swa...

Spring async的那些坑

async使用过程中需要注意的事项

Spring @async异步调用使用很方便,使用方法,参考官方文档 但是写好后一定要测试,异步函数阻塞,但是调用的地方继续往下执行。 遇到不生效情况,可以参考如下情况: 1. 方法不能使用static修饰 如为了调用翻遍的库函数,加了static后, @Async就不生效了。 1 2 3 public static asyncPost() { } 2. 没有用spring进行be...

设计模式

项目中用的设计模式

1 单例模式 对于设备服务建立连接,没有下发配置的时候,不创建线程和连接。所以采用单例模式,第一获取连接的时候,创建线程和连接。后续获取都不创建了。 2 工厂模式 数据汇聚层支持influxdb和另一个商业的时序数据库,读写接口不一样,通过工厂模式实现公共接口初始化为对应的操作时序数据库的实力,赋值给抽象的接口。保证业务层不受时序数据库的影响。 3 适配器模式 为了让edgex不需...

通过Mybatis进行数据库操作

Mybatis的实现原理和使用方法

Mybatis 基本原理 代理模式在GoF设计模式尤为突出,Spring AOP 就是代理模式的一个例子,而且它使用的也是JDK的动态代理实现。MyBatis同样在Mapper接口执行时也是使用这个,当你第一次使用Mybatis的Mapper接口时肯定和我一样非常惊讶,为什么主要定义接口,不需要实现,就可以使用了呢? 说说JDK动态代理,主要是三点 A:target-interface...