最近在負責郵件服務,里面會涉及到很多Email模板,這里我使用到了java的模板引擎:jetbrick-template,需要使用Map集合一個個往里面設置值,然后調用模板方法,進行替換。實體類一個個往Map中設置值,感覺非常麻煩,工作效率極低,此時想到了使用Java中的反射獲得實體類中的值,工具類如下
java 模板引擎點我直達
工具類
package com.ybchen.springbootohmyemail.convert; import com.sun.tools.javac.code.Attribute; import com.ybchen.springbootohmyemail.entity.EmailData; import java.lang.reflect.Field; import java.util.HashMap; import java.util.Map; /** * @ClassName:ReplaceEmailTemplate * @Description:郵件模板轉換工具 * @Author:chenyb * @Date:2020/11/30 6:52 下午 * @Versiion:1.0 */ public class ReplaceEmailTemplate { /** * 實體類轉Map * @param clazz 類 * @param obj 實體類 * @param <T> 實體類 * @return */ public static<T> Map<String,Object> replaceContext(Class<?> clazz,T obj) { Map<String,Object> map=new HashMap<String,Object>(); Field[] declaredFields = clazz.getDeclaredFields(); for(Field f:declaredFields){ try { //打開可見性,要不然獲取不到值 f.setAccessible(true); map.put(f.getName(),f.get(obj)); } catch (IllegalAccessException e) { e.printStackTrace(); }finally { //關閉可見性 f.setAccessible(false); } } return map; } }
調用
EmailData emailData = new EmailData("ybchen", "199999999", "www.baidu.com"); Map<String, Object> map = ReplaceEmailTemplate.replaceContext(EmailData.class,emailData);
package com.ybchen.springbootohmyemail.entity; import java.io.Serializable; /** * @ClassName:EmailData * @Description:TODO * @Author:chenyb * @Date:2020/11/30 6:56 下午 * @Versiion:1.0 */ public class EmailData implements Serializable { private String username; private String email; private String url; public EmailData() { } public EmailData(String username, String email, String url) { this.username = username; this.email = email; this.url = url; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } @Override public String toString() { return "EmailData{" + "username='" + username + '\'' + ", email='" + email + '\'' + ", url='" + url + '\'' + '}'; } }