项目的框架是 Sprinng + Spring mvc +Mybatis ,自己写了一套注解用于前台展示使用,由于延迟加载是cglib代理的,所以导致在获取对象中属性的注解服务获得,这个问题通过获得父类类型可以解决,
boolean cglibObjFlag=BeanHelper.isCglibObject(targetObj);
if(cglibObjFlag){
fields=targetClass.getSuperclass().getDeclaredFields();
}
,
还有一个问题,如果替换显示内容,查找资料后发现可以借助BeanMap工具类来实现
if(cglibObjFlag){
BeanMap beanMap = BeanMap.create(targetObj);
beanMap.put( field.getName(),isObj==true ?dictionaryPlatformDomain:dictionaryPlatformDomain.getColumn_content());
}
写篇文章以便日后查询
分享到:
相关推荐
3.1.2 cglib动态代理 3.1.3 动态代理的好处 3.2 什么是AOP 3.2.1 AOP常用术语 3.2.2 切面的构成 3.3 使用aspectJ框架实现AOP 3.3.1 aspectJ简介 3.3.2 @Before前置通知 3.3.3 @AfterReturning后置通知 3.3.4 @Around...
AOP在Java中主要通过动态代理来实现,包括JDK动态代理和CGLIB动态代理。 1. **JDK动态代理**: - JDK动态代理基于接口实现,代理对象和目标对象需实现相同的接口。在运行时,通过Java的`java.lang.reflect.Proxy`...
- **字节码操作库**:例如使用CGLIB、ASM等库自动生成代理类的字节码。 - **动态语言支持**:例如使用`java.lang.reflect.Proxy`类来创建动态代理类。 - **自定义代码生成**:通过编写代码来手动生成代理类的字节码...
Spring AOP的实现基于动态代理,主要依赖于两种类型的代理:JDK动态代理和CGLIB代理。JDK动态代理用于接口实现类,而CGLIB代理则用于没有接口的类。 1. **JDK动态代理**:当目标对象实现了至少一个接口时,Spring会...
- 动态代理:JDK动态代理和CGLIB动态代理的实现。 7. **网络编程**: - Socket通信:TCP和UDP的原理及应用。 - URL、URLConnection类的使用,以及HTTP协议的基础知识。 8. **设计模式**: - 常见的23种设计...
- CGLIB代理:当目标类没有实现接口时,Spring会使用CGLIB动态创建子类来实现AOP。 2. **基于注解的AOP** - `@Aspect`:标记切面类。 - `@Before`、`@After`、`@AfterReturning`、`@AfterThrowing`、`@Around`:...
- 代理模式:静态代理、动态代理(JDK动态代理、CGLIB动态代理)。 - 观察者模式(Observer)、装饰器模式(Decorator)、适配器模式(Adapter)等。 9. **框架应用** - Spring框架:IoC容器、AOP、MVC、MyBatis...
- **CGLIB动态代理**:适用于没有实现接口的情况,即可以直接对类进行代理。 #### 二、AOP编程 1. **AOP概念介绍**: - **定义**:AOP(Aspect Oriented Programming),即面向切面编程,它是Spring框架的另一个...
而CGLIB代理则是在运行时动态生成一个目标类的子类来实现,当目标对象没有实现接口时,Spring会选择使用CGLIB。 AOP的核心概念包括切面(Aspect)、通知(Advice)、连接点(Join Point)、切点(Pointcut)、织入...
- **动态代理**:理解JDK动态代理和CGLIB动态代理的实现原理。 8. **I/O与NIO** - **传统I/O**:掌握FileInputStream、OutputStream、BufferedReader、Writer等流的使用。 - **NIO(New I/O)**:理解非阻塞I/O...
对于非接口类,使用CGLIB动态代理。 Spring的IOC和AOP机制使得开发者能够更专注于业务逻辑,而不是繁琐的依赖管理和横切关注点。了解和掌握这两个核心概念,对于高效地使用Spring框架进行开发至关重要。
其原理是,使用 CGLIB 创建目标对象的代理对象,当调用目标方法时,进入拦截器方法,比如调用 a.getB().getName(),拦截器 invoke() 方法发现 a.getB() 是 null 值,那么就会单独发送事先保存好的查询关联 B 对象的 ...
- **动态代理**:了解Java动态代理的实现,包括JDK动态代理和CGLIB动态代理。 10. **设计模式** - **常用设计模式**:如单例、工厂、观察者、装饰者、适配器、策略、责任链等,理解其意图和使用场景。 11. **...
- **底层实现**:Spring使用动态代理技术实现AOP,包括JDK动态代理和CGLIB动态代理。 - **JDK动态代理**:适用于有接口的场景。 - **CGLIB动态代理**:适用于无接口的场景。 - **术语**: - **连接点**:程序执行...
有两种类型的代理:JDK动态代理和CGLIB代理。JDK动态代理适用于目标类实现了接口的情况,而CGLIB代理则用于没有接口或需要更细粒度控制的情况。 在实际应用中,Spring AOP的使用通常分为以下几个步骤: 1. **定义...
- 动态代理:理解JDK和CGLIB动态代理的实现原理。 - 构造器、方法和字段的反射调用。 8. **JVM** - 内存模型:堆、栈、方法区、本地方法栈和程序计数器。 - 垃圾回收:GC的工作原理和几种垃圾收集器。 - 类...
- **动态代理**:JDK动态代理和CGLIB动态代理的实现。 10. **Java 8新特性** - **Lambda表达式**:函数式编程概念,简化匿名内部类。 - **Stream API**:处理集合的新方式,支持并行流。 - **默认方法**:接口...