`

java.lang.ClassCastException: $Proxy0

    博客分类:
  • Java
阅读更多
spring练习中出现:
Exception in thread "main" java.lang.ClassCastException: $Proxy0
	at test.spring.test.MainTest.main(MainTest.java:12)


解决方法就是用接口来接受获得的bean

package test.spring.test;

import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;

import test.spring.service.UserService;
import test.spring.service.impl.UserServiceImpl;

public class MainTest {
	public static void main(String[] args) throws Exception {
		XmlBeanFactory factory = new XmlBeanFactory(new ClassPathResource("beans.xml"));
		UserService userService = (UserService)factory.getBean("service");
		userService.createUser("roundzheng", "123");
		userService.createUser("dsfds", "fdsfsd");
		userService.getPassword("roundzheng");
		if(userService.readUser("roundzheng")) {
			userService.deleteUser("roundzheng");
        }
		System.out.println("roundzheng's password is \"" + userService.getPassword("roundzheng") + "\""+userService.readUser("roundzheng"));
		factory.destroySingletons();
		
    }

}




<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" 
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="serviceTarget" class="test.spring.service.impl.UserServiceImpl" />
    <bean id="logAdvisor" class="test.spring.service.aop.LogAdvisor" />
    <bean id="service" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="proxyInterfaces"><value>test.spring.service.UserService</value></property>
        <property name="target"><ref local="serviceTarget"/></property>
        <property name="interceptorNames">
            <list>
                <value>logAdvisor</value>
            </list>
        </property>
    </bean>
</beans>

分享到:
评论

相关推荐

    《MyEclipse 6 Java 开发中文教程》前10章

    10.3.6 关于java.lang.ClassCastException: $Proxy0错误的解决方法 216 10.4 开发 Spring 2.0 AOP 应用 219 10.4.1 使用aop 标签实现AOP 219 10.4.2 使用标注(@AspectJ)实现AOP 221 10.4.3 开发环绕通知(Around ...

    java加强课程测试代码 反射、 代理 、泛型、beanUtils等

    Java标准库提供了两种类型的代理:静态代理(通过接口实现)和动态代理(通过`java.lang.reflect.Proxy`类实现)。 3. 泛型(Generics): 泛型引入于Java 5,增强了代码的类型安全性和可读性。它们允许我们在类、...

    java高新技术.txt

    - 使用 `java.lang.reflect.Proxy` 类和 `java.lang.reflect.InvocationHandler` 接口创建动态代理对象。 #### 示例代码 ```java public interface MyInterface { void myMethod(); } public class ...

    黑马程序员------代理类中invoke方法注意点

    静态代理是手动创建代理类,而动态代理则由JDK提供,通过`java.lang.reflect.Proxy`类和`InvocationHandler`接口实现。 1. `InvocationHandler`接口与`invoke`方法: `InvocationHandler`接口只有一个`invoke`方法...

    jdk 1.6 中文版 API

    8. **动态代理(Dynamic Proxies)**:通过java.lang.reflect.Proxy类和java.lang.reflect.InvocationHandler接口,可以创建动态代理类,实现接口并在运行时决定其行为。 9. **脚本引擎(Scripting Engines)**:...

    Java高级特性

    5. **动态代理(Dynamic Proxy)**:Java提供了CGLIB和Java.lang.reflect.Proxy来创建动态代理,可以用来实现AOP(面向切面编程),如日志、事务管理等功能。 6. **枚举注解(Enum Annotation)**:Java允许在枚举...

    反射泛型

    反射主要涉及`java.lang.Class`类和`java.lang.reflect`包中的相关类,如`Constructor`、`Method`和`Field`。 **泛型** 是从Java 5开始引入的一个特性,它为代码提供了类型安全的机制。泛型允许我们在定义类、接口...

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

     java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类 6、int 和 Integer 有什么区别  Java 提供两种不同的类型:引用类型和原始类型(或...

Global site tag (gtag.js) - Google Analytics