1.JsonIgnoreProperties(ignoreUnknown = true)
在spring boot转换从序列化时,忽略类中不存在的字段,也可以指定忽略字段@JsonIgnoreProperties({ “password”, “secretKey” })
2.@FeignClient注解
@FeignClient注解用于创建声明式API接口,该接口是RESTful风格的,
- name:指定FeignClient的名称,如果项目使用了Ribbon,name属性会作为微服务的名称,用于服务发现
- url: url一般用于调试,可以手动指定@FeignClient调用的地址
- decode404:当发生http 404错误时,如果该字段位true,会调用decoder进行解码,否则抛出FeignException
- configuration: Feign配置类,可以自定义Feign的Encoder、Decoder、LogLevel、Contract
- fallback: 定义容错的处理类,当调用远程接口失败或超时时,会调用对应接口的容错逻辑,
- fallback指定的类必须实现@FeignClient标记的接口
- fallbackFactory: 工厂类,用于生成fallback类示例,通过这个属性我们可以实现每个接口通用的容错逻辑,减少重复的代码
- path: 定义当前FeignClient的统一前缀,当我们项目中配置了server.context-path,server.servlet-path时使用
3.@Validated注解
spring-boot中可以用@validated来校验数据,如果数据异常则会统一抛出异常,方便异常中心统一处理。
4.StringUtils.isEmpty判断是否为空
判断某字符串是否为空,为空的标准是 str==null 或 str.length()==0
下面是 StringUtils 判断是否为空的示例:
StringUtils.isEmpty(null) = true
StringUtils.isEmpty("") = true
StringUtils.isEmpty(" ") = false //注意在 StringUtils 中空格作非空处理
StringUtils.isEmpty(" ") = false
StringUtils.isEmpty("bob") = false
StringUtils.isEmpty(" bob ") = false
5.String.matches()
String.matches() 这个方法主要是返回是否匹配指定的字符串,如果匹配则为true,否则为false; |
6.Strping.replaceAll()
语法:public String replaceAll(String regex, String replacement)
参数
-
regex -- 匹配此字符串的正则表达式。
-
replacement -- 用来替换每个匹配项的字符串。
返回值
成功则返回替换的字符串,失败则返回原始字符串。
public class Test {
public static void main(String args[]) {
String Str = new String("www.google.com");
System.out.print("匹配成功返回值 :" );
System.out.println(Str.replaceAll("(.*)google(.*)", "runoob" ));
System.out.print("匹配失败返回值 :" );
System.out.println(Str.replaceAll("(.*)taobao(.*)", "runoob" ));
}
}
以上程序执行结果为:
匹配成功返回值 :runoob 匹配失败返回值 :www.google.com
7.HashMap.containsKey()
containsKey() 方法检查 hashMap 中是否存在指定的 key 对应的映射关系。存在指定的 key 对应的映射关系返回 true,否则返回 false
8.Spring.split()
split() 方法根据匹配给定的正则表达式来拆分字符串。
注意: . 、 $、 | 和 * 等转义字符,必须得加 \\。
注意:多个分隔符,可以用 | 作为连字符。
语法
public String[] split(String regex, int limit)
参数
-
regex -- 正则表达式分隔符。
-
limit -- 分割的份数。
返回值
字符串数组。
读写Excel工具类ExcelUtil
getLastRowNum() :读取总行数
getLastCellNum():读取总列数、
LinkedHashMap
HashMap和双向链表合二为一即是LinkedHashMap。所谓LinkedHashMap,其落脚点在HashMap,因此更准确地说,它是一个将所有Entry节点链入一个双向链表的HashMap。
不过遗憾的是,HashMap是无序的,也就是说,迭代HashMap所得到的元素顺序并不是它们最初放置到HashMap的顺序。HashMap的这一缺点往往会造成诸多不便,因为在有些场景中,我们确需要用到一个可以保持插入顺序的Map。庆幸的是,JDK为我们解决了这个问题,它为HashMap提供了一个子类 —— LinkedHashMap。虽然LinkedHashMap增加了时间和空间上的开销,但是它通过维护一个额外的双向链表保证了迭代顺序。特别地,该迭代顺序可以是插入顺序,也可以是访问顺序。因此,根据链表中元素的顺序可以将LinkedHashMap分为:保持插入顺序的LinkedHashMap 和 保持访问顺序的LinkedHashMap,其中LinkedHashMap的默认实现是按插入顺序排序的。
Java Map.values()方法:
获取Map集合中的所有值对象
- public static void main(String[] args){
- Map map = new HashMap(); //定义Map集合对象
- map.put("apple","新鲜的苹果"); //向集合中添加对象
- map.put("computer","配置优良的计算机");
- map.put("book","堆积成山的图书");
- Collection values = map.values(); //获取Map集合的value集合
- for(Object object:values){
- System.out.println("键值:"+object.toString()); //输出键值对象
- }
- }
- 运行结果如下:
键值:配置优良的计算机
键值:新鲜的苹果
键值:堆积成山的图书
从entrySet()方法解释Map.Entry
set<Map,Entry<K,V>> entrySet() 将Map集合转换成set集合
假设现在有一个Map集合,如下所示
map集合。Map集合通过entrySet()方法转换成的这个set集合,set集合中元素的类型是Map.Entry<K,V>
Map.Entry和String一样,都是一种类型的名字,只不过Map.entry是静态内部类,是Map中的
Map.Entry<String, List<DnnExcelVO>> entry : data.entrySet()
JsonPath.read(json, json路径);
使用这个方法可以取出指定json路径上的json值.
JsonPath.read(outJson, "$.data.deviceList");取出outJson里data:deviceList下的值
StringTokenizer的用法详解
1.StringTokenizer(String str) :被分割对象str,分隔符采取默认分割,Java默认的分隔符是“空格”、“制表符(‘\t’)”、“换行符(‘\n’)”、“回车符(‘\r’)”。默认的话,所有的分隔符都会同时起作用。
实例:
[java] view plain copy
public static void main(String[] args) {
StringTokenizer st = new StringTokenizer("www ooobj com");
while(st.hasMoreElements()){
System.out.println("Token:" + st.nextToken());
}
}
输出:
Token:www
Token:ooobj
Token:com
api:boolean
hasMoreTokens(); //判断字符串中是含还有token
Object nextElement();//除返回结果类型外,其返回与
nextToken
方法相同的值
String
nextToken();//StringTokenizer对象中的下一个token。
instanceof关键字
他的作用就是测试左边的对象是不是右边类的实例,是的话就返回true,不是的话返回false。
boolean b = object instanceof class
<![CDATA[ ]]>用法
在xml文件中<![CDATA[ 标记为纯文本 ]]>
在pg库中查询表属性sql
SELECT col_description(a.attrelid,a.attnum) as comment,format_type(a.atttypid,a.atttypmod) as type,a.attname as name, a.attnotnull as notnull
FROM pg_class as c,pg_attribute as a
where c.relname = 'table_name' and a.attrelid = c.oid and a.attnum>0
读取配置文件中属性的方法
1.使用@value注解直接读取
2.使用实体类读取配置文件
例子:
先创立cccccTg对象实体类
@Data @AllArgsConstructor @NoArgsConstructor public class cccccTg { public String path; public String ip; public String cfgType; public String netType; }
再创建读取配置文件实体类
使用@ConfigurationProperties(prefix = "name")读取指定配置内融,注意属性名必须和配置文件里一样,不然无法读取
@Data @Component @ConfigurationProperties(prefix ="pml") public class FileConfig { List<cccccTg> cccccTg; }