beangenerator

cglib的使用

爱⌒轻易说出口 提交于 2021-02-12 04:45:56
cglib大名在java界如雷贯耳,众多优秀的开源项目均使用其来实现各自的功能(spring aop,hibernate等等),这里主要简单介绍一下cglib的使用,对比一下java原生的proxy还有javaassist. 说到cglib第一印象就是动态代理(啥是动态代理?请百度<设计模式>),没错,这是它牛逼的功能之一, 使用cglib构建动态代理核心类就是Enhancer,作用如其名:增强.它能够对目标类的方法进行增强.上代码: /** * Created by wally on 3/1/18. */ public abstract class Animal { private String name; public Animal() { } public Animal(String name) { this .name = name; } public abstract void eat(); public void live(){ System.out.println( "i'm " + name); eat(); } } public class Duck extends Animal { public Duck() { } public Duck(String name) { super (name); } @Override public void eat() {

java poi excel 导出 表头 列名 不是类属性 导出的数据一部分存放在容器里面

会有一股神秘感。 提交于 2020-07-29 03:44:55
贴上解决我自己问题的代码,当然还有其它方式,见文章后面的总结 import java.util.Iterator; import java.util.Map; import java.util.Set; import org.springframework.cglib.beans.BeanGenerator; import org.springframework.cglib.beans.BeanMap; public class DynamicDto { public DynamicDto() { super(); } /** * 目标对象 */ private Object target; /** * 属性集合 */ private BeanMap beanMap; @SuppressWarnings("unchecked") public void init(Map propertyMap) { this.target = generateBean(propertyMap); this.beanMap = BeanMap.create(this.target); } /** * 给bean属性赋值 * @param property 属性名 * @param value 值 */ public void setValue(String property, Object