在日常的开发过程中,我们会将一些和业务无关,但是通用性又比较强的代码封装成工具类、来提高代码的可重用性。但是许多工具类,在我们常用的框架都已经帮我们实现了,不需要我们自行再去封装。下面是我在工作中常常见到的Spring给我们提供的工具类。
ServletRequestUtils
该工具类用于就是从Request中获取各种参数的,以下是我常常用到的一些方法。
//从request获取String类型的参数
public static String getStringParameter(ServletRequest request, String name)
//从request获取String类型的参数,如果没有值则取默认值
public static String getStringParameter(ServletRequest request, String name, String defaultVal)
//也可以获取请求参数,不同的是如果请求参数不存在会抛出ServletRequestBindingException异常。当我们需要严格的数据验证是超级有用
public static String getRequiredStringParameter(ServletRequest request, String name)
当然里面还包含了Long、double、float、int、Boolean数据类型的获取。
WebUtils
WebUtils我主要用于对session的操作,当然里面还包含了其他方法但是目前我还没有使用过,大家有兴趣可以研究研究然后可以告知我。

WebUtils
PatternMatchUtils
指定字符串匹配类型格式pattern对字符串及字符串数组进行简单地查找匹配,从而判断是否存在,我是常常在过滤器中使用这个工具类。
@Value("${ars.filter.ignoreUrl}")
private String ignoreUrl;
private String[] ignorePatterns;
@Override
public void init(FilterConfig filterConfig) throws ServletException {
ignorePatterns = (String[]) ignoreUrl.split(",");
}
String path = request.getServletPath();
boolean pass = PatternMatchUtils.simpleMatch(ignorePatterns, path);
if (pass) {
filterChain.doFilter(servletRequest, servletResponse);
}
AopUtils
主要用于判断代理类型。
//判断是不是 Spring 代理对象
public static boolean isAopProxy(@Nullable Object object)
// 判断是不是 jdk 动态代理对象
public static boolean isJdkDynamicProxy(@Nullable Object object)
//判断是不是 CGLIB 代理对象
public static boolean isCglibProxy(@Nullable Object object)
//获取被代理对象的 class
public static Class<?> getTargetClass(Object candidate)
ReflectionUtils(反射)
简化项目中反射代码的复杂性,以下是我在工作中常常用到的方法。
//// 在类中查找指定方法
public static Method findMethod(Class<?> clazz, String name)
// 获得类中所有方法,包括继承而来的
public static Method[] getAllDeclaredMethods(Class<?> leafClass)
// 执行方法
public static Object invokeMethod(Method method, @Nullable Object target)
// 同上,提供方法参数
public static Object invokeMethod(Method method, @Nullable Object target, @Nullable Object... args)
// 在类中查找指定属性
public static Field findField(Class<?> clazz, String name)
// 同上,多提供了属性的类型
public static Field findField(Class<?> clazz, @Nullable String name, @Nullable Class<?> type)
//是否为一个 "public static final" 属性
public static boolean isPublicStaticFinal(Field field)
// 获取 target 对象的 field 属性值
public static Object getField(Field field, @Nullable Object target)
//设置 target 对象的 field 属性值,值为 value
public static void setField(Field field, @Nullable Object target, @Nullable Object value)
归纳一下自己在工作中常常用到的工具类,有点多今天先到这吧,剩下的明天再说。
© 版权声明
文章版权归作者所有,未经允许请勿转载。如内容涉嫌侵权,请在本页底部进入<联系我们>进行举报投诉!
THE END















暂无评论内容