- 博客(405)
- 资源 (2)
- 收藏
- 关注
原创 配置一个Spring Boot应用的过程详解
一个Spring Boot应用,为了适应不同的运行环境,其可配置的属性不能写在应用代码中,而往往位于应用之外,即配置属性的改变无需修改Spring Boot应用。Spring Boot可以通过如下几种方式实现属性的应用外配置:properties文件yml文件操作系统的环境变量应用的启动参数这里我们只介绍最基本的application.properties配置文件及其使用。1.为Spring Bo...
2017-09-01 15:28:16 442
原创 Spring应用中注入Spring bean的情况总结
1.在一个应用类(也是一个Spring bean)中,通过Spring bean注入接口的实现类接口定义如下:public interface AnInterface { String getMessage();}1) 只定义了接口的一个实现类(这也是最常见的一种情况)实现类定义如下:@Componentpublic class AnImpl implements ...
2017-08-23 17:31:07 2001
原创 开发一个Maven插件的过程详解
很多工具软件都希望能够以Maven插件的形式提供,这里给出一个开发Maven插件的详细过程,供参考。1. 在Eclipse中创建新的Maven Project2. 可以看到,创建Maven Project的过程,默认就是执行maven-archetype-quickstart的过程3.在创建Maven Project的过程最后,为Maven插件设置Group Id,...
2017-08-21 15:34:16 6103 2
原创 RAML文件的Java解析器raml-java-parser概述
raml-java-parser是RAML社区提供的开源Java解析器。之前还有一个RAML 0.8的Java解析器,现在命名为raml-java-parser-2,已经过时了。raml-java-parser是一款基于SnakeYAML的RAML解析器,以Java语言编写。raml-java-parser全面支持RAML 1.0和RAML 0.8,当前版本为1.0.14(2017.8发布
2017-08-16 17:09:45 2568 3
原创 Spring TestContext Framework对JUnit4和TestNG的集成支持详解
Spring TestContext Framework是spring-test模块中提供的一个测试框架,能够用于单元测试和集成测试。为了与已有的JUnit 4 (JUnit 4.12+)和TestNG测试框架集成使用,Spring TestContext Framework还提供了如下集成的支持。1. Spring JUnit 4 Runner,用以全面集成JUnit 4@RunWith(Spr...
2017-08-15 18:16:47 2951
原创 使用Spring Boot与否,初始化Spring应用的对比
Spring framework最初以轻量级打败了学院派的JavaEE。但是作为Spring framework核心的IoC,却总显得不那么直观。初始化一个Spring应用需要大量的配置,然后启动Web应用的时候又需要Servlet容器,等等。为了方便开发人员使用,Spring做了大量的易用性改进,下面通过简单的例子,看看启动一个Spring应用有多简单了。1.Spring fra
2017-08-13 21:37:46 261
原创 Spring Boot的SpringApplication类详解
相信使用过Spring Boot的开发人员,都对Spring Boot的核心模块中提供的SpringApplication类不陌生。SpringApplication类的run()方法往往在Spring应用的入口类中被调用,以启动Spring应用。1.Spring应用的入口类与SpringApplication类1) Spring应用的入口类Spring应用的入口类是Spring应
2017-08-13 21:18:59 26581 3
原创 利用Spring Boot配置的TestNG测试用例详解
与JUnit不同,Spring Boot本身没有提供与TestNG集成的基础设施。那么如何利用Spring Boot的配置,执行一个TestNG测试用例呢?在Spring Boot提供的大量samples中,有一个spring-boot-sample-testng可供参考。基于该sample中,我们的TestNG测试类如下:@SpringBootTest(classes = { ClientLau...
2017-08-11 14:14:12 14763
原创 JSON及其Java处理器Jackson、Gson和JSON.simple入门详解
1. JSON (JavaScript Object Notation)JSON是一种数据交换格式,基于E3 (1999版)的一个子集。常见的JSON的Java处理器:FasterXML Jackson Google Gson JSON-lib2. JacksonJackson是一个Java类库,用以处理JSON数据格式。Apache License 2.01) Jacks...
2017-08-10 16:58:28 1086
原创 Curl命令的data, data-ascii, data-binary, data-raw和data-urlencode选项详解
Curl命令为HTTP POST方法提供了若干种设置数据的选项,这里比较一下。1. 首先说明如下给出的选项的相同点模拟Web页面中提交表单,用于POST请求 默认Content-type为application/x-www-form-urlencoded 选项的value如果是@a_file_name,表示数据来自一个文件 选项的value如果是-,表示读取stdin作为提交的数据,...
2017-08-10 09:07:42 80151 4
原创 Spring Boot执行repackage遇到Source must refer to an existing file异常详解
在Spring Boot应用构建完成后,修改了中间生成的代码,希望能够更新最终的jar包。执行mvn spring-boot:repackage,遇到异常如下:Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:1.5.4.RELEASE:repackage (default-cli) on pr
2017-07-20 14:40:30 16194
原创 Spring Boot应用的Unable to find main class异常详解
1. Spring Boot应用执行java -jar myApp.jar时,出现如下异常:[ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:1.5.4.RELEASE:repackage (default) on project teac: Execution default of ...
2017-07-19 23:13:37 43048
原创 Spring Boot的Maven插件Spring Boot Maven plugin详解
Spring Boot的Maven插件(Spring Boot Maven plugin)能够以Maven的方式为应用提供Spring Boot的支持,即为Spring Boot应用提供了执行Maven操作的可能。Spring Boot Maven plugin能够将Spring Boot应用打包为可执行的jar或war文件,然后以通常的方式运行Spring Boot应用。Spring Boo...
2017-07-18 15:18:20 144906 9
原创 RAML for JAX-RS的raml-to-jaxrs子项目简介
RAML for JAX-RS是Mulesoft提供的RAML工具之一,能够从RAML文件生成Java+JAX-RS的代码,或者反之。最新版本是2017.7发布的2.1.0。RAML for JAX-RS包含两个子项目,一个是raml-to-jaxrs,另一个是jaxrs-to-raml。本文主要介绍其中的raml-to-jaxrs。1. raml-to-jaxrs的特性能够根据RAM...
2017-07-14 17:49:17 699
原创 Spring MVC-RAML Synchronizer Sample代码分析
Spring MVC-RAML Synchronizer Sample,顾名思义是Spring MVC-RAML Synchronizer的一个示例。但是Spring MVC-RAML Synchronizer包含3个组成部分,所以准确地说,Spring MVC-RAML Synchronizer Sample是springmvc-raml-plugin的示例。即,Spring MVC-RAML ...
2017-07-12 16:07:57 848
原创 Spring MVC - RAML Spec Synchroniser简介
1. Spring MVC - RAML Spec Synchroniser是一个工具,用以在Spring MVC应用和RAML文件定义之间进行同步。即Spring MVC应用的变化,可以通过该工具同步体现在RAML文件的定义中;反之亦然。该工具包含如下3个独立的组件:springmvc-raml-pluginspringmvc-raml-parser(忽略),解析Spring Annotatio...
2017-07-12 15:16:16 1130
原创 Pexpect模块的pxssh扩展子模块详解
在Pexpect模块中,pexpect.pxssh.pxssh类扩展自pexpect.spawn类,专用于SSH连接的设置。通过pxssh类的login()方法,在第一次连接远程SSH服务器的时候,能够将服务器的证书保存在known_hosts中。pxssh类支持通过密钥认证,而无需输入密码。pxssh类使用的Shell提示符能够兼容大多数Borne/Bash或Csh。基本使用示例
2017-07-03 23:31:18 4584
原创 RAML文档生成器raml2html详解
raml2html是一款从RAML到HTML的文档生成器,JavaScript语言编写。raml2html默认支持Node.js,支持默认或定制theme。1. 版本raml2html 3.x支持RAML 0.8raml2html 4支持RAML 1.02. 安装npm i -g raml2html安装Markdown主题npm i -g raml2ht
2017-06-27 10:50:14 4497
原创 RAML概述
RAML(RESTful API Modeling Language)是一个采用YAML格式定义的API建模语言。2017.6发布最新版本1.0RAML在Github上有一组项目,组成如下:raml-specRAML规范raml-examplesRAML特性示例,RAML规范的组成部分raml-definition-systemRAML 1.0定
2017-06-23 23:55:18 4875
原创 Python的Pexpect模块详解
对于存在交互过程的远程访问,如ssh, ftp, mencoder, passwd等,通过Pexpect模块可以根据应用的输出控制交互过程,从而提高容错性。Pexpect模块首先通过生成子应用以代理交互应用,这样就可以通过检测子应用的模式匹配情况以响应交互应用的输出。作为Don Libes的Expect实现之一,Pexpect模块是一个纯Python实现。Python也有其他的类E
2017-06-23 23:35:11 14260
原创 Python的functools模块详解
Python的functools模块用以为可调用对象(callable objects)定义高阶函数或操作。简单地说,就是基于已有的函数定义新的函数。所谓高阶函数,就是以函数作为输入参数,返回也是函数。1. functools模块的引用from functools import partial2. partial()函数partial(func, *args, **
2017-06-22 14:25:03 5655
原创 Dockerfile中的ARG指令详解
Dockerfile中的ARG指令用以定义构建时需要的参数,使用格式如下:ARG a_nameARG a_nother_name=a_default_valueARG指令定义的参数,在docker build命令中以--build-arg a_name=a_value形式赋值。如果docker build命令传递的参数,在Dockerfile中没有对应的参数,将抛出如下警告:[W
2017-06-15 23:38:56 40416
原创 Dockerfile中的Shell风格与JSON风格对比及SHELL指令详解
1. 在Dockerfile中,有些指令(如RUN,ENTRYPOINT和CMD指令)的定义,可以采用Shell格式,也可以采用JSON格式。1) 采用Shell格式定义,示例如下:CMD top -b上述CMD指令,在采用默认SHELL的情况下,实际执行“/bin/sh -c top -b”。2) 采用JSON格式定义,示例如下:CMD ["top", "-b"]上述CM
2017-06-15 23:15:50 1212
原创 Dockerfile中的COPY和ADD指令详解与比较
Dockerfile中的COPY指令和ADD指令都可以将主机上的资源复制或加入到容器镜像中,都是在构建镜像的过程中完成的。COPY指令和ADD指令的唯一区别在于是否支持从远程URL获取资源。COPY指令只能从执行docker build所在的主机上读取资源并复制到镜像中。而ADD指令还支持通过URL从远程服务器读取资源并复制到镜像中。满足同等功能的情况下,推荐使用COPY指令。ADD指令更...
2017-06-14 13:53:25 93667 4
原创 Dockerfile中的ENTRYPOINT和CMD指令详解与比较
Dockerfile中的ENTRYPOINT指令和CMD指令都可以设置容器启动时要执行的命令,但用途是有略微不同的。ENTRYPOINT指令和CMD指令虽然是在Dockerfile中定义,但是在构建镜像的时候并不会被执行,只有在执行docker run命令启动容器时才会起作用。在Dockerfile中,只能有一个ENTRYPOINT指令,如果有多个ENTRYPOINT指令则以最后一个为准。...
2017-06-14 13:13:14 46338
原创 Dockerfile中的ENV指令详解
1. Dockerfile中的ENV指令用以定义镜像的环境变量。示例如下:RUN set -ex && apt-get update && apt-get install -y iputils-pingENV PATH /usr/local/bin:$PATHENV LANG C.UTF-8ENV TERM xtermENV PYTHON_VERSION 3.5.3ENV name1
2017-06-13 23:26:50 92240 2
原创 Dockerfile中的Parser directives及escape
Dockerfile中的Parser directives用以提示解析器进行特殊处理。对于Dockerfile,Parser directives是可选的。可以不定义Parser directives,但一旦要定义,则Parser directives必须位于Dockerfile中的第一行。Parser directives的定义:形似注释,但非注释# directive=
2017-06-13 12:31:13 1289
原创 使用docker run的选项以覆盖Dockerfile中的设置详解
通常,我们首先定义Dockerfile文件,然后通过docker build命令构建得到镜像文件。然后,才能够基于镜像文件通过docker run启动一个容器的实例。那么在启动一个容器的时候,就可以改变镜像文件中的一些参数,而镜像文件中的这些参数往往是通过Dockerfile文件定义的。但并非Dockerfile文件中的所有定义都可以在启动容器的时候被重新定义。docker run不能覆盖...
2017-06-12 17:19:51 34927
原创 docker run的--rm选项详解
在Docker容器退出时,默认容器内部的文件系统仍然被保留,以方便调试并保留用户数据。但是,对于foreground容器,由于其只是在开发调试过程中短期运行,其用户数据并无保留的必要,因而可以在容器启动时设置--rm选项,这样在容器退出时就能够自动清理容器内部的文件系统。示例如下:docker run --rm ba-208等价于docker run --rm=true ba-20...
2017-06-11 23:54:51 116296 8
原创 Docker容器的重启策略及docker run的--restart选项详解
1. Docker容器的重启策略Docker容器的重启策略是面向生产环境的一个启动策略,在开发过程中可以忽略该策略。Docker容器的重启都是由Docker守护进程完成的,因此与守护进程息息相关。Docker容器的重启策略如下:no,默认策略,在容器退出时不重启容器 on-failure,在容器非正常退出时(退出状态非0),才会重启容器 on-failure:3,在容器非正常退...
2017-06-11 23:39:51 135939 3
原创 docker run命令概述及Docker容器的两种运行模式
docker run命令用于根据镜像文件创建并启动一个容器实例。一个容器实例就是宿主机器上的一个独立的进程。每次执行docker run,就创建一个Docker容器进程,拥有独立的文件系统、网络和进程树。1. 命令格式docker run [OPTIONS] IMAGE_NAME:TAG|IMAGE_NAME@DIGEST ...2. 容器的运行模式Docker容器进程有两种运...
2017-06-07 23:13:09 7403
原创 Docker守护进程的配置及日志
安装Docker并启动,在Docker所在的服务器上,就一直有一个Docker守护进程dockerd在运行。默认手工启动Docker守护进程,只需要执行如下命令:dockerd停止上述进程,只需要CTRL+C键盘命令。当然在服务器上,更多的是以后台程序的方式启动:dockerd&1. dockerd的配置文件如果要使用非默认配置参数启动Docker守护进程,...
2017-06-07 11:13:42 18993
原创 Python的requests软件包详解
requests是一款Python的第三方HTTP类库,便于进行HTTP访问。1.requests的特性能够发送HTTP 1.1请求 无需手工为GET方法设置URL的请求参数,无需手工为POST方法组编码表单形式 借助于urllib3实现HTTP请求的连接会话缓存 支持Python 2.6, 2.7, 3.3-3.72.requests的安装requests不是Python...
2017-06-04 22:24:35 1978
原创 Python的urllib3软件包的证书认证及警告的禁用
1. urllib3软件包的证书验证(Certificate verification)默认,urllib3不进行HTTPS请求验证,即不认证服务器的证书。要在HTTPS请求之前进行服务器验证,还需要在客户端安装根证书。安装Python的certifi软件包就可以使用Mozilla的根证书。1) certifi软件包的安装pip install certifi或pip
2017-06-01 00:19:01 10895 1
原创 Python的urllib3软件包详解
urllib3是一款Python 3的HTTP客户端。Python标准库提供了urllib。在Python 2中,另外提供了urllib2;而在Python 3中,重构了urllib和urllib2到标准库urllib,并另外提供了urllib3。1.urllib3的特性线程安全 连接缓冲池 客户端SSL/TLS验证 文件上传 请求重试 HTTP重定向 支持gzip和de...
2017-05-31 23:38:32 5839
原创 Docker容器中Data volumes详解
Data volumes可以视为容器中的一种特殊的文件路径,用以保存与容器实例生命周期无关的共享数据。1. Data volumes的特性在容器创建的时候初始化 作为文件系统的一部分,但是不受Union File System的管理; 便于持久化存储数据和共享数据 Data volumes的数据是持久化的,删除容器不影响Data volumes的数据 对Data volumes的操...
2017-05-23 23:24:34 6189 1
原创 docker create命令详解
docker create命令能够基于镜像创建容器。该命令执行的效果类似于docker run -d,即创建一个将在系统后台运行的容器。但是与docker run -d不同的是,docker create创建的容器并未实际启动,还需要执行docker start命令或docker run命令以启动容器。事实上,docker create命令常用于在启动容器之前进行必要的设置。示例如下:...
2017-05-23 23:04:29 17643
原创 docker cp命令详解
docker cp命令,能够在容器和执行该命令的机器的本地文件系统之间复制文件或目录。1. 使用格式1)从容器中复制文件或目录到执行命令所在机器的指定路径docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-2)从执行命令所在的机器复制文件或目录到容器内部的指定路径docker cp [OPTIONS] SRC_PATH|- CONTA...
2017-05-22 22:53:52 31376
原创 git tag的类型及其命令详解
git tag命令用于操作Git的tag对象,如进行创建、删除、列表和验证等。1. Git中的tags分类Git中的tags总体可以分为两类:1) "annotated" tags即使用git tag -a|-s|-u 命令创建的tags。一个"annotated" tags意味着一次正式的发布。"annotated" tags对象中包含创建日期,创建者名字和邮箱、tag
2017-05-17 23:46:29 4011
原创 Dockerfile概述
Dockerfile是一个纯文本文件,用以定义容器内部的安装配置环境,以构建出定制的容器镜像。Dockerfile的示例如下:#comment#based on the existing imageFROM ubuntu:latestMAINTAINER [email protected] /my_homeADD . /my_home#run co
2017-05-17 10:07:21 402
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人