zoukankan      html  css  js  c++  java
  • 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());
    	}
    
    }
    

      

      

  • 相关阅读:
    什么是https?
    Gojs
    GoJs 01讲解
    你真的了解WebSocket吗?
    django channels
    序列化及反序列化
    全角转半角
    Thread Culture
    设置输入法
    token的认证使用
  • 原文地址:https://www.cnblogs.com/vtyluoluo/p/3793069.html
Copyright © 2011-2022 走看看