1. 说明
去除目标对象中字符串的前后空格,以及目标对象内集合属性的前后空格
2.示例
2.1 直接看效果
public static void main(String[] args) {
Province province = new Province();
// 目前对象属性前后空格
province.setProvinceName(" 你在哪a ");
// 目前对象集合属性前后空格
List<City> cityList = new ArrayList<>();
City city = new City();
city.setCityName(" 我在这呢 ");
cityList.add(city);
province.setCityList(cityList);
try {
System.out.println("处理前===> provinceName:"+province.getProvinceName() );
System.out.println("处理前===> cityName:"+province.getCityList().get(0).getCityName() );
System.out.println("【开始处理】");
TUtils.trimBeanString(province);
System.out.println("处理后===> provinceName:"+province.getProvinceName() );
System.out.println("处理后===> cityName:"+province.getCityList().get(0).getCityName() );
} catch (Exception e) {
e.printStackTrace();
}
}2.2 结果如下:

实验类如下(只展示重要信息)
public class Province {
private String provinceName;
private List<City> cityList;
}
public class City {
private String cityName;
}
主要实现方法:
TUtils.trimBeanString(Object object);3. 工具类如下:
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
/**
* @Description: Bean 前后空格处理
* @Date: 2022/6/22 16:33
* @Author: luch
* @Version: 1.0
**/
public class TUtils {
/**
* 去掉bean中所有属性为字符串的前后空格
*
* @param bean
* @throws Exception
*/
public static void trimBeanString(Object bean) throws Exception {
if (bean != null) {
//获取所有的字段包括public,private,protected,private
Field[] fields = bean.getClass().getDeclaredFields();
for (int i = 0; i < fields.length; i++) {
Field f = fields[i];
// 对其中的集合同样进行空格处理
if (f.getType().getName().equals("java.util.List")) {
List<Object> objects = objCastList(getFieldValue(bean, f.getName()), Object.class);
for (Object object : objects) {
trimBeanString(object);
}
}
if (f.getType().getName().equals("java.lang.String")) {
String key = f.getName();
//获取字段名
Object value = getFieldValue(bean, key);
if (value == null){
continue;
}
setFieldValue(bean, key, value.toString().trim());
}
}
}
}
/**
* 利用反射通过get方法获取bean中字段fieldName的值
*
* @param bean
* @param fieldName
* @return
* @throws Exception
*/
private static Object getFieldValue(Object bean, String fieldName)
throws Exception {
StringBuffer result = new StringBuffer();
String methodName = result.append("get")
.append(fieldName.substring(0, 1).toUpperCase())
.append(fieldName.substring(1)).toString();
Object rObject = null;
Method method = null;
@SuppressWarnings("rawtypes")
Class[] classArr = new Class[0];
method = bean.getClass().getMethod(methodName, classArr);
rObject = method.invoke(bean, new Object[0]);
return rObject;
}
/**
* 利用发射调用bean.set方法将value设置到字段
*
* @param bean
* @param fieldName
* @param value
* @throws Exception
*/
private static void setFieldValue(Object bean, String fieldName, Object value)
throws Exception {
StringBuffer result = new StringBuffer();
String methodName = result.append("set")
.append(fieldName.substring(0, 1).toUpperCase())
.append(fieldName.substring(1)).toString();
//利用反射调用bean.set方法将value设置到字段
@SuppressWarnings("rawtypes")
Class[] classArr = new Class[1];
classArr[0] = "java.lang.String".getClass();
Method method = bean.getClass().getMethod(methodName, classArr);
method.invoke(bean, value);
}
/**
* 集合
* @param obj
* @param clazz
* @param <R>
* @return
*/
private static <R> List<R>objCastList(Object obj, Class<R> clazz){
List<R> list =new ArrayList<>();
if(obj instanceof List<?>){
for(Object o :(List<?>)obj){
list.add(clazz.cast(o));
}
}
return list;
}
}4. AOP拦截方式(注解)
版权声明:本文为luChenH原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。