Spring(十八):Spring IoC/DI 理解

  IoC(Inverse of Control)控制反转:不是某种技术,而是一种设计思想,Spring IoC容器是该设计思想的实现。
  控制反转包含两层意思,一是控制,二是反转。

  DI(Dependency Injection)依赖注入:是组件之间、对象之间的依赖关系由容器在运行期决定,即由容器动态的将某个依赖对象注入到组件中。

  控制反转依赖注入实际说的是同一件事,只是站在两个对立的角度来解释这件事。控制反转是站在调用者的角度来理解,本来由我自己来创建对象的,现在不需要这么做了,由容器直接给你所需要的;依赖注入是站在容器的角度来理解,你需要什么,我找到给你就是,你没必要自己创建了。

阅读更多

MySQL之时间相差13个小时

一次因升级 JDBC 驱动导致生产环境数据库时间与服务器时间相差+13个小时。

1
2
[mysqld]
default-time_zone = '+8:00'

spring.datasource.url=jdbc:mysql://localhost:3306/db_name?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasource.url=jdbc:mysql://localhost:3306/db_name?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&autoReconnect=true&serverTimezone=GMT%2B8

阅读更多

Spring(十五):Spring 之 @Enable* 注解

  Spring提供了强大的注解功能,有部分注解是以@Enable*开头的,表示开启某项功能,本文汇总下此类注解。

  1. @EnableAspectJAutoProxy
    开启对AspectJ自动代理的支持。
  2. @EnableAsync
    开启异步方法的支持,也可注释在类级别,表示该类下的所有方法都开启异步执行。
  3. @EnableScheduling
    开启动计划(定时)任务的支持。
  4. @EnableWebMvc
    开启Web MVC的配置的支持。
  5. @EnableConfigurationProperties
    开启对@ConfigurationProperties注解配置Bean的支持。
  6. @EnableJpaRepositories
    开启对Spring Data JPA Repository的支持。
  7. @EnableTransactionManagement
    开启注解式事务的支持。
  8. @EnableCaching
    开启注解式的缓存支持。
阅读更多

Spring(十四) @Value注解与Spring EL表达式注入属性值

Spring 提供了@Value注解来支持资源的注入,可以很便捷的让属性值注入到组件中,当值不存在可以设置一个默认值。

@Value 注解还可以结合 Spring EL 表达式获取 Spring 容器中的 Bean 的值,以 #{}进行表达式声明。

  • @Value:使用 ${}声明,从外部配置的参数取值。
  • SpringEL:使用 #{}声明,使用表达式获取变量的值。
  • #{}${}可以混合使用,必须是 #{}在外,${}在里面。
阅读更多

Utils:常用工具类(io,file,bean,String,Array)

org.apache.commons

io.IOUtils

  1. closeQuietly 关闭一个IO流、socket、或者selector且不抛出异常。通常放在finally块。
  2. toString 转换IO流、 Uri、 byte[]为String。
  3. copy IO流数据复制,从输入流写到输出流中,最大支持2GB。
  4. toByteArray 从输入流、URI获取byte[]。
  5. write 把字节. 字符等写入输出流。
  6. toInputStream 把字符转换为输入流。
  7. readLines 从输入流中读取多行数据,返回List
  8. copyLarge 同copy,支持2GB以上数据的复制。
  9. lineIterator 从输入流返回一个迭代器,根据参数要求读取的数据量,全部读取,如果数据不够,则失败。

io.FileUtils

  1. deleteDirectory 删除文件夹。
  2. readFileToString 以字符形式读取文件内容。
  3. deleteQueitly 删除文件或文件夹且不会抛出异常。
  4. copyFile 复制文件。
  5. writeStringToFile 把字符写到目标文件,如果文件不存在,则创建。
  6. forceMkdir 强制创建文件夹,如果该文件夹父级目录不存在,则创建父级。
  7. write 把字符写到指定文件中。
  8. listFiles 列举某个目录下的文件(根据过滤器)。
  9. copyDirectory 复制文件夹。
  10. forceDelete 强制删除文件

lang.StringUtils

  1. isBlank 字符串是否为空 (trim后判断)。
  2. isEmpty 字符串是否为空 (不trim并判断)
  3. equals 字符串是否相等
  4. join 合并数组为单一字符串,可传分隔符
  5. split 分割字符串
  6. EMPTY 空字符串
  7. trimToNull trim后为空字符串则转换为null
  8. replace 替换字符串

lang3.StringUtils

  1. isBlank 字符串是否为空 (trim后判断)
  2. isEmpty 字符串是否为空 (不trim并判断)
  3. equals 字符串是否相等
  4. join 合并数组为单一字符串,可传分隔符
  5. split 分割字符串
  6. EMPTY 空字符串
  7. replace 替换字符串
  8. capitalize 首字符大写

io.FilenameUtils

  1. getExtension 返回文件后缀名
  2. getBaseName 返回文件名,不包含后缀名
  3. getName 返回文件全名
  4. concat 按命令行风格组合文件路径(详见方法注释)
  5. removeExtension 删除后缀名
  6. normalize 使路径正常化
  7. wildcardMatch 匹配通配符
  8. seperatorToUnix 路径分隔符改成unix系统格式的,即/getFullPath 获取文件路径,不包括文件名
  9. isExtension 检查文件后缀名是不是传入参数(List)中的一个

lang.ArrayUtils

  1. contains 是否包含某字符串
  2. addAll 添加所有
  3. clone 克隆一个数组
  4. isEmpty 是否空数组
  5. add 向数组添加元素
  6. subarray 截取数组
  7. indexOf 查找下标
  8. isEquals 比较数组是否相等
  9. toObject 基础类型数据数组转换为对应的Object数组

lang3.ArrayUtils

  1. contains 是否包含某字符串
  2. addAll 添加所有
  3. clone 克隆一个数组
  4. isEmpty 是否空数组
  5. add 向数组添加元素
  6. subarray 截取数组
  7. indexOf 查找下标
  8. isEquals 比较数组是否相等
  9. toObject 基础类型数据数组转换为对应的Object数组

lang.StringEscapeUtils

支持编码转换
escapeXml unEscapeXml。
此外,还支持html. java. JavaScript. sql. csv等

lang3.StringEscapeUtils

支持编码转换
escapeJson unEscapeJson。
此外,还支持html. java. JavaScript. sql. csv. xml等

codec.digest.DigestUtils

  1. md5Hex MD5加密,返回32位
  2. sha1Hex SHA-1加密
  3. sha256Hex SHA-256加密
  4. sha512Hex SHA-512加密
  5. md5 MD5加密,返回16位

collections.CollectionUtils

  1. isEmpty 是否为空
  2. select 根据条件筛选集合元素
  3. transform 根据指定方法处理集合元素,类似List的map()。
  4. filter 过滤元素,雷瑟List的filter()
  5. find 基本和select一样
  6. collect 和transform 差不多一样,但是返回新数组
  7. forAllDo 调用每个元素的指定方法。
  8. isEqualCollection 判断两个集合是否一致

beanutils.PropertyUtils

  1. getProperty 获取对象属性值
  2. setProperty 设置对象属性值
  3. getPropertyDiscriptor 获取属性描述器
  4. isReadable 检查属性是否可访问
  5. copyProperties 复制属性值,从一个对象到另一个对象
  6. getPropertyDiscriptors 获取所有属性描述器
  7. isWriteable 检查属性是否可写
  8. getPropertyType 获取对象属性类型

beanutils.BeanUtils

  1. copyPeoperties 复制属性值,从一个对象到另一个对象
  2. getProperty 获取对象属性值
  3. setProperty 设置对象属性值
  4. populate 根据Map给属性复制
  5. copyPeoperty 复制单个值,从一个对象到另一个对象。
  6. cloneBean 克隆

org.springframework

util.StringUtils

  1. hasText 检查字符串中是否包含文本
  2. hasLength 检测字符串是否长度大于0
  3. isEmpty 检测字符串是否为空(若传入为对象,则判断对象是否为null)
  4. commaDelimitedStringToArray 逗号分隔的String转换为数组
  5. collectionToDelimitedString 把集合转为CSV格式字符串
  6. replace 替换字符串
  7. delimitedListToStringArray 相当于split
  8. uncapitalize 首字母小写
  9. collectionToDelimitedCommaString 把集合转为CSV格式字符串
  10. tokenizeToStringArray 和split基本一样,但能自动去掉空白的单词

org.apache.http

util.EntityUtils

  1. toString 把Entity转换为字符串
  2. consume 确保Entity中的内容全部被消费。可以看到源码里又一次消费了Entity的内容,假如用户没有消费,那调用Entity时候将会把它消费掉。
  3. toByteArray 把Entity转换为字节流
  4. consumeQuietly 和consume一样,但不抛异常
  5. getContentCharset 获取内容的编码

client.utils.URLEncodedUtils

  1. format 格式化参数,返回一个HTTP POST或者HTTP PUT可用 application/x-www-form-urlencoded字符串
  2. parse 把String或者URI等转换为List