spring 切面织入报错:java.lang.ClassCastException: com.sun.proxy.$Proxy7 cannot be cast to...

报这个错,只有一个原因,就是转化的类型不对.

接口过父类的子类,在强制转换的时候,一定要用接口父类来定义。

代码示例:

package com.luoluo.dao.impl;

import java.sql.Connection;
import java.sql.SQLException;

import javax.annotation.Resource;
import javax.sql.DataSource;

import com.luoluo.dao.UserDAO;
import com.luoluo.model.User;

public class UserDAOImpl implements UserDAO {
	private DataSource dataSource;

	public DataSource getDataSource() {
		return dataSource;
	}

	@Resource
	public void setDataSource(DataSource dataSource) {
		this.dataSource = dataSource;
	}

	public void save(User user) {
		//Hibernate
		//JDBC
		//XML
		//NetWork
		try {
			Connection conn = dataSource.getConnection();
			conn.createStatement().executeUpdate("insert into user values (null,‘zhang‘,‘123456‘)");
			conn.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println("user saved!");
	}

	@Override
	public void delete(User user) {
		System.out.println("user deleted!");
	}

}
package com.luoluo.myapp;

import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.luoluo.dao.UserDAO;
import com.luoluo.dao.impl.LogInterceptor;
import com.luoluo.model.User;

public class UserServiceTest {
	@Test
	public void testAspect(){
		ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext(new String[] {"servlet-context.xml", "root-context.xml"});
		UserDAO userDAOImpl=(UserDAO)ctx.getBean("userDAOImpl");//由于UserDAOImpl实现了UserDAO接口,所以强制转换必须用父类UserDAO来定义

		LogInterceptor logInterceptor =(LogInterceptor) ctx.getBean("logInterceptor");
		System.out.println(logInterceptor.getClass().getName());
		userDAOImpl.save(new User());
		userDAOImpl.delete(new User());
	}

}

  

  

spring 切面织入报错:java.lang.ClassCastException: com.sun.proxy.$Proxy7 cannot be cast to...

时间: 2024-11-05 15:55:18

spring 切面织入报错:java.lang.ClassCastException: com.sun.proxy.$Proxy7 cannot be cast to...的相关文章

java.lang.ClassCastException: com.sun.proxy.$Proxy27 cannot be cast to com.bbk.n002.service.QuestionService

1 严重: Servlet /N002-1.0 threw load() exception 2 java.lang.ClassCastException: com.sun.proxy.$Proxy27 cannot be cast to com.bbk.n002.service.QuestionService 3 at com.bbk.n002.servlet.CreateTaskQueueServlet.init(CreateTaskQueueServlet.java:28) 4 at ja

java.lang.ClassCastException: com.sun.proxy.$Proxy* cannot be cast to***问题解决方案

临床表现: 使用Spring AOP动态代理: 使用Spring管理的bean类继承自某个接口: Spring容器中有你要代理的bean的id,但是该id不能强制转换成Bean类. 病例: 定义代理类: @Transactional @Repository public UserDaoImpl implements UserDao extends BaseDaoImpl{ /*没有实现任何接口*/ } 获取代理类: ApplicationContext ctx = new ClassPathXm

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

代码如下: final Connection conn=pool.remove(0); //利用动态代理改造close方法 Connection proxy= (Connection) Proxy.newProxyInstance(conn.getClass().getClassLoader(), conn.getClass().getInterfaces(), new InvocationHandler() { @Override public Object invoke(Object pro

EJB学习(三)——java.lang.ClassCastException: com.sun.proxy.$Proxy2 cannot be cast to..

在上一篇博客介绍了如何使用使用Eclipse+JBOSS创建第一个EJB项目,在这期间就遇到一个错误: Exception in thread "main" java.lang.ClassCastException: com.sun.proxy.$Proxy2 cannot be cast to com.tgb.ejb.HelloWorldBean at com.tgb.ejb.client.Client.main(Client.java:12) 出现的原因有二: 1.你的HelloW

tomcat启动时候报错java.lang.ClassCastException

2012-8-29 10:30:28 org.apache.catalina.core.StandardContext filterStart 严重: Exception starting filter encodingFilter java.lang.ClassCastException: org.springframework.web.filter.CharacterEncodingFilter cannot be cast to javax.servlet.Filter at org.ap

[报错]java.lang.ClassCastException

Caused by: java.lang.ClassCastException: org.apache.xml.dtm.ref.DTMManagerDefault cannot be cast to org.apache.xml.dtm.DTMManager Error while adding the mapper 'interface com.a.b.c' to configuration. 原因:org.apache.xalan_2.7.1.v201005080400.jar, xalan

spring Mongodb查询索引报错 java.lang.NumberFormatException: empty String

笔者在mongo3.4/4.0环境下使用以下命令创建索引, db.getCollection("xxx.com").createIndex({ mobile: "" }, { name: "mobile_mac" }) 执行以下demo查询索引 mongoTemplate.indexOps(collection).getIndexInfo(); #笔者正式环境不是这么写的,这里方便大家理解,使用语法糖方式的代码 ;p 每次走到xxx.com表的时

tomcat项目启动报错java.lang.ClassCastException: org.apache.xerces.parsers.XML11Configuration……

周一上班启动项目,报错如图: 看到网上说的原因,有jar包冲突造成的,我这里的是: 情况:console打印信息有多次连接数据库,但该项目只需要连接一个库.再仔细看,发现有其他项目的信息,打开tomcat,发现webapps下果然有其他项目. 分析:早上来的时候,直接关闭了很多项目,但这些项目还在tomcat下部署,并没有删除,所以造成启动时产生一系列的bug. 解决:在tomcat的webapps下删除其他项目.重新部署正在使用的项目,重启,OK. 所以,有多个项目的时候,操作的时候要注意一些

自定义 UsernamePasswordToken 报错 java.lang.ClassCastException: org.apache.shiro.authc.UsernamePasswordToken cannot be cast to

UsernamePasswordToken 转型时 出现了异常 代码如下 没有地方使用我们的自己扩展的CustomerUsernamePasswordToken类,只是转型而已,并没有去实例化它,这才是引起问题的根源,问题发现了要如何解决它呢?我们在配置的使用并并未制定表单过滤器,此时默认使用的是FormAuthenticationFilter,而Token默认使用的也是UsernamePasswordToken,由此看来,我们扩展的CustomerUsernamePasswordToken就成