`
cljspn
  • 浏览: 46923 次
  • 性别: Icon_minigender_1
  • 来自: 长春
最近访客 更多访客>>
社区版块
存档分类
最新评论

避免客户端代码直接引用目标Bean

阅读更多

在Spring的ApplicationContext中为了避免客户端代码直接引用目标Bean,可以将目标Bean定义成内部Bean,我在其中是这样配置的

<bean id="service"
  class="org.springframework.aop.framework.ProxyFactoryBean">
  <property name="proxyInterfaces">
   <value>org.spring.aop.target.TestService</value>
  </property>
  <property name="target">
  <bean class="org.spring.aop.advice.AuthorityInterceptor"/>
  <!--  <ref local="serviceTarget" /> -->
  </property>
  <property name="interceptorNames">
   <list>
    <value>authorityInterceptor</value>
   </list>
  </property>
 </bean>

出现如下错误:

Exception in thread "main" org.springframework.aop.AopInvocationException: AOP configuration seems to be invalid: tried calling method [public abstract void org.spring.aop.target.TestService.view()] on target [org.spring.aop.advice.AuthorityInterceptor@1193779]; nested exception is java.lang.IllegalArgumentException: object is not an instance of declaring class
Caused by: java.lang.IllegalArgumentException: object is not an instance of declaring class
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
 at java.lang.reflect.Method.invoke(Unknown Source)
 at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:318)
 at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:203)
 at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:162)
 at org.spring.aop.advice.AuthorityInterceptor.invoke(AuthorityInterceptor.java:21)
 at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
 at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:209)
 at $Proxy0.view(Unknown Source)
 at org.spring.aop.target.TestActionImpl.view(TestActionImpl.java:15)
 at org.spring.aop.main.Test.main(Test.java:17)

 

请指教

分享到:
评论
2 楼 ddandyy 2007-03-16  
google了一下

有意思的动态类装载特性object is not an instance of declaring class异常,证明同名类已被装载。 有趣的是,如果仍然调用使用反射获取的原来类的方法,对象仍然可以运行。 而且在例子中,使用了不同的URLClassLoader实例,而当使用相同的URLClassLoader实例时, ...
dev2dev.bea.com.cn/bbs/thread.jspa?forumID=125&threadID=26849&messageID=160930 - 44k - 网页快照 - 类似网页
1 楼 ddandyy 2007-03-16  
仔细看 置顶的 发帖的智慧
发贴之前一定要google
你这个错都给你报出来了  去找一下 应该不会找不到吧

相关推荐

    自己总结的Spring实用资料

    - 使用`ref`属性:直接在`&lt;property&gt;`标签中通过`ref`属性引用另一个bean,如`&lt;property name="bean3" ref="bean3"/&gt;`。 - 使用`&lt;ref&gt;`标签:与`ref`属性类似,如`&lt;property name="bean4"&gt;&lt;ref bean="bean4"/&gt;...

    struts标签库总结

    `id`属性定义Bean的脚本变量名,`type`指定Bean的类型,`value`或`name`属性定义Bean的值或引用已存在的Bean,`propertyName`用于指定Bean的属性,`scope`定义源Bean的作用域,`toScope`定义目标Bean的作用域。...

    meteor-bean:Bean - 一个用于 javascript 的事件 API,为流星打包

    它避免了每次事件触发时对所有监听器进行循环检查,而是使用了直接引用,从而减少了内存消耗和CPU使用率。此外,Bean API还支持在DOM节点移除时自动清理相关的事件监听器,防止内存泄漏。 六、扩展与社区支持 ...

    Java面试笔试大全&#40;解答 题库&#41;.doc

    无状态Bean不保留会话信息,每次调用独立,而有状态Bean能记住客户端的状态。EntityBean(实体Bean)则用于持久化数据,对应数据库中的记录。 以上是Java面试笔试中常见的知识点,深入理解和掌握这些概念对于成为一...

    java.lang.ClassCastException

    3. **DTO**:DTO是一种设计模式,用于在系统边界之间传输数据,避免了直接暴露底层数据结构。在服务层,DTO可以接收从数据库查询的结果,然后转换成适合客户端消费的格式。当在DTO与业务对象或视图模型之间进行转换...

    j2ee攻略(经典)

    EJB的目标是简化复杂的企业应用程序的开发,提高代码的可维护性和可扩展性。 **1.2 EJB的运行环境** EJB需要在特定的容器中运行,如JBOSS等。容器负责管理EJB的生命周期,提供事务处理、安全性、并发控制等功能。...

    凑积分11111111111

    - **AddRef**:每当一个客户端获得组件的一个接口时,都会调用 `AddRef` 来增加引用计数,确保即使其他客户端还在使用组件时也不会被释放。 - **Release**:当客户端不再需要使用某个接口时,它会调用 `Release` 来...

    Java面试独孤秘籍

    - **SessionBean**代表客户端会话,管理临时状态,不持久化,适用于业务逻辑处理。 - **EntityBean**表示持久化的业务对象,与数据库紧密关联,用于数据存储。 9. **StatefulBean(无状态会话bean)**与**...

    DWR开发培训.ppt

    4. **组件发布与引用:** Java组件需要是具体类,遵循Java Bean规范,然后在DWR配置文件中声明,客户端通过特定路径引用JS文件来调用Java组件。 5. **回调函数:** DWR支持回调函数,用于处理服务器返回的结果,提供...

    基于Java的实例源码-EJB中JNDI的使用源码例子.zip

    4. **EJB的客户端编程**:在客户端代码中,我们使用JNDI查找来获取EJB的远程接口实例。这通常涉及到以下步骤: - 创建InitialContext对象,配置相关的JNDI属性(如服务器地址、端口等)。 - 调用InitialContext的...

    java面试题

    `SessionBean`用于业务逻辑处理,可以是有状态的(Stateful Session Bean)也可以是无状态的(Stateless Session Bean),主要处理客户端请求。`EntityBean`用于持久化数据,代表数据库中的实体,可以是CMR(Entity)或...

    JAVA相关基础知识

    - **StatefulBean** 保存客户端会话状态,每次交互都能记住之前的状态。 - **StatelessBean** 不保存会话状态,每次交互都是独立的。 这些是Java开发中的一些基础知识点,理解和掌握它们对于学习和使用Java至关...

    java EE全套面试笔试题

    会话Bean处理客户端请求,实体Bean代表持久化的业务对象,消息驱动Bean则处理异步消息。 #### EJB本地接口与远程接口区别 本地接口和远程接口主要用于区分EJB组件的访问方式。本地接口用于同一JVM内的组件间通信,...

    DWR ppt 资料

    1. **表现层和业务逻辑的完全分离**:DWR使JavaScript可以直接调用后台服务,避免了Scriptlets,减少了页面代码对样式的干扰,提升了开发效率。 2. **资源优化**:只加载一次页面,节省带宽,减少网络传输,提高...

    超级有影响力霸气的Java面试题大全文档

     forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。...

    最全的Java面试题

    EJB通过远程接口(Remote Interface)进行调用,客户端通过此接口引用EJB组件,并调用其方法。EJB容器负责处理实际的调用过程,包括安全性检查、事务管理、状态管理等。 #### EJB与JAVABEAN的区别 JAVABEAN是Java...

Global site tag (gtag.js) - Google Analytics