最近项目中使用InstantiationAwareBeanPostProcessorAdapter后处理bean的方式发布springbean到osgi容器,但是这里有个方法
@Override
public Object postProcessAfterInitialization(Object bean, String beanName)
第一个参数是Object
这个参数可能是目标对象也可能是代理对象。
现在我要获取原来对象类级别上的一个注解,而且需要通过反射对该对象进行调用 不管是不是代理对象都要完成这样的功能。
通过测试如果是jdk动态代理获取到的代理对象都是$Proxy+一个数字形式 获取不到目标对象上的注解
如果是cglib形式的代理,代理对象上面都是带有cglib字样的形式 能获取到目标对象的注解
通过反射都能正确调用到代理对象上的方法。
这样的话如果是jdk代理那么首先要获取到目标对象让后通过目标对象来获取注解就ok了。
猜测(有待验证):jdk代理直接通过代理形式 和目标对象没有关系 所以获取不到目标对象上的注解。
而cglib代理是通过继承的方式 所有注解也继承了下来这样生成的目标对象可以获取注解。
如何通过代理对象获取到目标对象可以通过
AopTargetUtils.java这个工具类 测试过可以获取到。
相关推荐
1.10 基于JDK动态代理和CGLIB动态代理的实现Spring注解管理事务(@Trasactional)到底有什么区别。 1.11 在spring中获取代理对象代理的目标对象工具类 1.12 如何为spring代理类设置属性值 1.13 我对SpringDAO层支持...
所以 Spring4 必须支持 Java6,7 和8,为了保持向后兼容性, Spring 框架没有适应 Java8 带来的许多新特性,比如 lambda 表达式。 Spring5 的基准版本为8,因此它使用了 Java8 和9的许多新特性。例如: Spring ...
7.5.3. 基于JDK和CGLIB的代理 7.5.4. 对接口进行代理 7.5.5. 对类进行代理 7.5.6. 使用“全局”advisor 7.6. 简化代理定义 7.7. 使用ProxyFactory通过编程创建AOP代理 7.8. 操作被通知对象 7.9. 使用“自动代理...
Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。 Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架...
Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。 Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架...
文件数据存储在Blob类型的FILE_CONTENT表字段上,在Spring中采用OracleLobHandler来处理Lob字段(包括Clob和Blob),由于在程序中不需要引用到oracle数据驱动程序的具体类且屏蔽了不同数据库处理Lob字段方法上的...
mybatis 的开发环境搭建,选择: eclipse j2ee 版本,mysql 5.1 ,jdk 1.7,mybatis3.2.0.jar包。这些软件工具均可以到各自的官方网站上下载。 首先建立一个名字为 MyBaits 的 dynamic web project 1. 现阶段,你可以...
基于 SpringBoot + Vue 前后端分离开发的一款动态个人博客系统,主要功能有文章管理、分类管理、标签管理、附件管理、评论管理和友链管理等。 技术使用 规范实现: 统一请求响应 统一异常处理 Java Bean Validation...
Fastjson 1.1.42 发布了,主要改进内容包括: 1. 修复parser在处理循环引用在某些特定场景下的bug; 2. 支持在Bean上通过JSONType配置...13. 修复spring3代理对象序列化失败的bug。 14. 兼容odps环境JDK
PhoneShop-SSM:✦项目描述:该项目主要实现手机商城,商家将自己要卖的手机放在平台上,顾客可以加入购物车并购买,商家可以看到所有顾客的订单订单订单进行处理,其中伴随着数据库中数据的修改。该项目中还设置了一...
由于光盘容量有限,笔者删除了原始镜像目录中一部分的网页,可能执行效果和书上不能完全一致,请读者读懂原理后灵活处理。 说明:因为mirror.rar文件引用了第三方网站的大量信息,这需要得到网站的授权,授权的办理...
237、触发器分为事前触发和事后触发,这两种触发有和区别。语句级触发和行级触发有何区别。 56 238、EJB容器提供的服务 56 239、EJB的角色和三个对象 56 240、EJB的几种类型 56 241、bean 实例的生命周期 56 242、...
237、触发器分为事前触发和事后触发,这两种触发有和区别。语句级触发和行级触发有何区别。 56 238、EJB容器提供的服务 56 239、EJB的角色和三个对象 56 240、EJB的几种类型 56 241、bean 实例的生命周期 56 242、...
第6章 充分利用spring 2.5的ioc利器统管bean世界 349 6.1 java程序员的春天厚礼—spring 2.5 349 6.1.1 爱上spring 2.5的十大理由 350 6.1.2 一睹spring 2.5芳容 351 6.1.3 spring 2.5拿手戏——控制反转与依赖...
并说出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别。 9 6. Collection 和 Collections的区别。 9 7. &和&&的区别。 9 8. HashMap和Hashtable的区别。 10 9. final, finally, finalize的区别...
jwx是开源的java公众号开发MVC框架,基于spring配置文件和微信消息或事件注解,通过微信上下文处理一个或多个微信公众号服务请求。目的主要有两个,其一生封装微信请求xml消息为java实体对象,将返回对象转换为xml...
<bean id="jmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"> <property name="connectionFactory" ref="connectionFactory" /> ...
配置文件init部分声明那些用于建立远程bean和在方法调用中转换bean的类.这部分是可选择性配置的,多数情况下可以不必使用它,如果你想定义一个新的creator或者converter那么就必须在部分中声明,but do double check on...