跳至主要内容

博文

目前显示的是 2019的博文

Orika使用示例

Orika使用示例 简述 在项目中使用过不少Java Bean映射(Java Bean属性拷贝)类库,比如Apache和Spring的 BeanUtils , cglib 的 BeanCopier 等。 Apache和Spring的 BeanUtils 没有对list拷贝的内置支持,对属性不同类型的转换也缺乏默认的支持,需要做不少封装。 cglib 的 BeanCopier 的API相对来说比较难使用,虽然速度极快,但需要做更多的封装,可读性不好。 综合下来,发现 Orika 能较好的满足各项常见的Java Bean映射需求。 使用实例 在实际使用中,通常可以把 Orika 封装成一个静态工具类,示例如下: public class BeanMapperUtils { private static final DefaultMapperFactory mapperFactory ; private static final MapperFacade mapper ; static { mapperFactory = new DefaultMapperFactory . Builder ( ) . build ( ) ; mapper = mapperFactory . getMapperFacade ( ) ; } public static < S , D > D map ( S s , Class < D > aClass ) { return mapper . map ( s , aClass ) ; } public static < S , D > List < D > mapAsList ( Iterable < S > iterable , Class < D > aClass ) { return mapper . mapAsList ( iterable , aClass ) ;

Postman添加公共HTTP头

Postman添加公共HTTP头 postman添加公共HTTP头的方法如下: 1、在 Collections 下的文件夹右键,点击编辑 2、在 Pre-request Scripts 选项卡下,添加JS代码: pm . request . headers . add ( { key : 'header_name' , value : 'header_value' } ) pm . request . headers . upsert ( { key : 'header_name' , value : 'header_value' } ) pm . request . headers . remove ( 'header_name' ) 添加之后,对整个文件夹下的请求都有效 注意:如果需要看实际发送的请求参数,可以点工具栏的view->Show Postman Console

动手实现:用Java实现一个简单的ArrayList

动手实现:用Java实现一个简单的ArrayList 概述 ArrayList是一个可以自动扩容的List接口实现,由命名可以看出是由数组实现。本文尝试编写一个简单的ArrayList实现,通过对比来理解JDK中的ArrayList是如何实现的。本次主要实现ArrayList的常用方法,完成简单的CRUD和迭代器。 动手实现 成员变量和构造方法 首先看一下类声明,为了更方便实现列表的相关方法,以及面向接口编程,这里声明实现 List 接口,类命名为SimpleArrayList public class SimpleArrayList < E > implements List < E > { } 然后再看一下成员变量,这里设计两个成员变量,第一个变量是实际存储数据的数组,第二个变量是数据的大小 private Object [ ] data ; private int size ; 然后在构造方法中初始化数组 public SimpleArrayList ( ) { data = new Object [ 10 ] ; } CRUD的实现 首先看一下 add 方法实现 @Override public boolean add ( E e ) { //判断数组还有没有空间存放新的元素 if ( ( size + 1 ) > data . length ) { Object [ ] newData = new Object [ data . length + 10 ] ; System . arraycopy ( data , 0 , newData , 0 , data . length ) ; data = newData ; } data [ size ++ ] = e ; return true ; } 方法先判断数组中还有没有足够空间存放新元素。如果没有足够空间,就创建一个新数组,长度在原来的基础上增加10,再把原来数组的内容拷贝到新数组里,最后把新数组赋值给实际存储数据的成

Spring Boot 2 启动流程解析

Spring Boot 2 启动流程解析 本文基于Spring Boot 2.1.4.RELEASE版本,希望通过"自顶向下"的方法来理解Spring Boot的启动流程。先从整体上了解流程走向,再查看对应源码。 启动类 Spring Boot的启动类通常如下: @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } 首先看一下 @SpringBootApplication 注解,这个注解由3个注解组成 @SpringBootApplication=@EnableAutoConfiguration+@ComponentScan+@Configuration 注意: @SpringBootApplication实际上注册的是@SpringBootConfiguration,但@SpringBootConfiguration里面包含了@Configuration。 各个注解作用如下: @EnableAutoConfiguration 开启自动配置 @ComponentScan SpringBean扫描 @Configuration 开启配置类 然后再看一下 SpringApplication 类,这个类主要通过如下步骤启动应用: 根据应用的classpath创建对应的ApplicationContext(独立应用、WEB应用或REACTIVE应用) 注册CommandLinePropertySource,把命令行参数转换为Spring Properties 刷新ApplicationContext,加载所有的单例SpringBean 调用实现了CommandLineRunner的SpringBean中的run方法 下面从源码上分别来看下这些步骤,这些步骤主要在 SpringApplication 类中的run方法中( public ConfigurableApplicationContext run(String... args)