Spring中自带工具类(1)

在日常的开发过程中,我们会将一些和业务无关,但是通用性又比较强的代码封装成工具类、来提高代码的可重用性。但是许多工具类,在我们常用的框架都已经帮我们实现了,不需要我们自行再去封装。下面是我在工作中常常见到的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的操作,当然里面还包含了其他方法但是目前我还没有使用过,大家有兴趣可以研究研究然后可以告知我

Spring中自带工具类(1)

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
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容