java.lang.ClassCastException: com.sun.proxy.$Proxy2 cannot be cast to...异常

时间:2022-09-22 09:34:44

异常:

Exception in thread "main" java.lang.ClassCastException: com.sun.proxy.$Proxy2 cannot be cast to com.pro.service.impl.UserServiceImpl
at com.pro.test.TestSpring.main(TestSpring.java:12)

一、抛异常的工程

定义Service层接口

 package com.pro.service;

 /**
* 用户操作接口
*/
public interface IUserService {
public void add();//添加方法
public void update();//修改方法
public void delete();//删除方法
public void query();//查询方法
}

定义Service层实现类

package com.pro.service.impl;

import com.pro.service.IUserService;

public class UserServiceImpl implements IUserService {

    @Override
public void add() {
System.out.println("增加方法");
} @Override
public void update() {
System.out.println("修改方法");
} @Override
public void delete() {
System.out.println("删除方法");
} @Override
public void query() {
System.out.println("查询方法");
} }

配置文件代码

<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
<import resource="config/user.xml"/>
<bean id="userService" class="com.pro.service.impl.UserServiceImpl"></bean>
<bean id="log" class="com.pro.aop.Log"></bean>
<bean id="logTwo" class="com.pro.aop.LogTwo"></bean>
<bean id="logThree" class="com.pro.aop.LogThree"></bean> <!-- 1.api使用aop -->
<aop:config>
<aop:pointcut id="pointcut" expression="execution(* com.pro.service.impl.*.*(..))"/>
<aop:advisor advice-ref="log" pointcut-ref="pointcut"/>
</aop:config> </beans>

 测试代码

 package com.pro.test;

 import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import com.pro.service.IUserService;
import com.pro.service.impl.UserServiceImpl; public class TestSpring {
public static void main(String[] args) {
ApplicationContext ac=new ClassPathXmlApplicationContext("config.xml");
UserServiceImpl u=(UserServiceImpl)ac.getBean("userService");
u.add();
}
}

二、原因分析

   Spring AOP实现方式有两种,一种使用JDK动态代理,另一种通过CGLIB来为目标对象创建代理。如果被代理的目标实现了至少一个接口,则会使用JDK动态代理,所有该目标类型实现的接口都将被代理。若该目标对象没有实现任何接口,则创建一个CGLIB代理,创建的代理类是目标类的子类。

   显然,本工程中实现了一个接口,所以该是通过JDK动态代理来实现AOP的。

三、解决方案

1.在配置文件中配置proxy-target-class="true"

<aop:aspectj-autoproxy proxy-target-class="true"/>
2.将目标类型改为接口类型

java.lang.ClassCastException: com.sun.proxy.$Proxy2 cannot be cast to...异常

java.lang.ClassCastException: com.sun.proxy.$Proxy2 cannot be cast to...异常的更多相关文章

  1. EJB学习(三)——java&period;lang&period;ClassCastException&colon; com&period;sun&period;proxy&period;&dollar;Proxy2 cannot be cast to&period;&period;

    在上一篇博客介绍了怎样使用使用Eclipse+JBOSS创建第一个EJB项目,在这期间就遇到一个错误: Exception in thread "main" java.lang.C ...

  2. Java-Spring&colon;java&period;lang&period;ClassCastException&colon; com&period;sun&period;proxy&period;&dollar;Proxy&ast; cannot be cast to&ast;&ast;&ast;问题解决方案

    java.lang.ClassCastException: com.sun.proxy.$Proxy* cannot be cast to***问题解决方案 临床表现: 病例: 定义代理类: @Tra ...

  3. java&period;lang&period;ClassCastException&colon; com&period;sun&period;proxy&period;&dollar;Proxy32 cannot be cast to com&period;bkc&period;bpmp&period;core&period;cache&period;MemcachedManager

    java.lang.ClassCastException: com.sun.proxy.$Proxy32 cannot be cast to com.bkc.bpmp.core.cache.Memca ...

  4. 关于利用动态代理手写数据库连接池的异常 java&period;lang&period;ClassCastException&colon; com&period;sun&period;proxy&period;&dollar;Proxy0 cannot be cast to java&period;sql&period;Connection

    代码如下: final Connection conn=pool.remove(0); //利用动态代理改造close方法 Connection proxy= (Connection) Proxy.n ...

  5. 开发Spring过程中几个常见异常(三):java&period;lang&period;ClassCastException&colon; com&period;sun&period;proxy&period;&dollar;Proxy4 cannot be cast to com&period;edu&period;aop&period;ArithmeticCalculatorImpl &Tab;at com&period;edu&period;aop&period;Main&period;main&lpar;Main&period;java&colon;11&rpar;

    这个异常是在开发Spring案例时遇到的. 贴一下完整异常信息: Exception in thread "main" java.lang.ClassCastException: ...

  6. java&period;lang&period;ClassCastException&colon; com&period;sun&period;proxy&period;&dollar;Proxy27 cannot be cast to com&period;bbk&period;n002&period;service&period;QuestionService

    1 严重: Servlet /N002-1.0 threw load() exception 2 java.lang.ClassCastException: com.sun.proxy.$Proxy2 ...

  7. java&period;lang&period;ClassCastException&colon; com&period;sun&period;proxy&period;&dollar;Proxy53 cannot be cast to cn&period;service&period;impl&period;WorkinggServiceImpl

    java.lang.ClassCastException: com.sun.proxy.$Proxy53 cannot be cast to cn.service.impl.WorkinggServi ...

  8. java&period;lang&period;ClassCastException&colon; com&period;sun&period;proxy&period;&dollar;Proxy6 cannot be cast to com&period;etc&period;service&period;serviceImpl&period;BankServiceImpl

    错误原因: java.lang.ClassCastException: com.sun.proxy.$Proxy6 cannot be cast to com.etc.service.serviceI ...

  9. 自定义连接池java&period;lang&period;ClassCastException&colon; com&period;sun&period;proxy&period;&dollar;Proxy4 cannot be cast to java&period;sql&period;Connection

    原因:Connection.getInterfaces() 与数据库驱动有关,数据库驱动不同 Connection.getInterfaces() 的结果也就不同,Connection.getInte ...

随机推荐

  1. hdu 4315 Climbing the Hill(阶梯博弈转nim博弈)

    Climbing the Hill Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  2. Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?

    方法的重写Overriding和重载Overloading是Java多态性的不同表现.重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现.如 ...

  3. 让EntityFramework&period;Extended支持MySql

    EF:Entity Framework EFEL:Entity Framework Extended Library EFEL5.0时代是不支持MySql的,现在升级到6.0之后,已经支持MySql了 ...

  4. 【转载分享】 JLINKv9在迅为iTOP-4412精英板上的应用

    本文转自:https://www.amobbs.com/thread-5680586-1-1.html 很多人买迅为iTop4412精英板,在Android或Linux+Qt跑起来后学习开发调试应用程 ...

  5. PPPoE图解

  6. 如何修改CSV文件的分隔符

    Excel转成CSV文件,在Windows下默认的列表分隔符是逗号(,).在某些情况下,我们可能需要更改列表分隔符,如某个单元格内容包含逗号,而这可能导致使用它的程序出错,这样就需要更改列表分隔符:再 ...

  7. &lpar;转&rpar;Groupon前传:从10个月的失败作品修改,1个月找到成功 并不挶泥在这个点子上面,它反而往后站一步,看看他们已经做好的这个网站,可以再怎么包装成另一个完完全全不同的网站?所有的人所做的每件失败的事情中, 一定有碰到或含有成功的答案」在里面,只是他们不知道而已。 人不怕失败」,只怕宣布失败」

    (转)Groupon前传:从10个月的失败作品修改,1个月找到成功 今天读到 一个非常励志人心的故事 ,就像现在「叶问」有「前传」,最近很火红的团集购网站Groupon 也出现了「Groupon前传」 ...

  8. nginx请求频率限制模块ngx&lowbar;http&lowbar;limit&lowbar;req&lowbar;module

    模块: ngx_http_limit_req_module 作用: 限制客户端请求频率,防止恶意攻击 配置示例: http { limit_req_zone $binary_remote_addr z ...

  9. C&num; 字符串处理小工具

    之前刚上大学时沉迷于安全方面,当时一直想写一个处理字符串的小程序. 无奈当时没有太多时间,一直拖延到这寒假. 寒假闲来无事,所以就写写小程序来练手,顺便复习一下窗体和基础. 实现的功能有以下: 转换为 ...

  10. Java中的集合框架-Collection(二)

    上一篇<Java中的集合框架-Collection(一)>把Java集合框架中的Collection与List及其常用实现类的功能大致记录了一下,本篇接着记录Collection的另一个子 ...