这里是代理类,已经正确注入了。
到这里生成代理对象的时候抛出异常,内容如下。
有没有大佬解释下。
补充,这个代理的对象是aop的切点。
你是不是用的注解的方式?
我看你的报错信息是类型转换 不匹配啊
1.贴一下UserService类代码,这样看不知道是接口还是普通类
2.第一张图没注入成功,注入成功只是你自己的想法
3.注入的使用和整体代理写的都有问题
@Autowired 如果你想注入serverice方法 还是在contoller 里面使用 在java类是不允许的
因为我就遇到过这个坑
这样,我给你一个简单思路,1、因为是依赖注入,所以在不是公司这样的项目里,可以不声明Dao的实体类,只写一个抽象dao接口
2、写一个Services接口,和Services实体类
3、在Services的实体类的Class上写一个@Component("")括号里定义这个实体类的名字!(https://img-ask.csdn.net/upload/201708/18/1503023193_993527.png)
4、在Services的实体类里要调用Dao的接口,这样Services就和Dao链接了,给private Dao的类名 自定义Dao类名,get,set方法
5、在set方法上加@Resource 只有这样你的Services才会和Dao接口链接
6、下面是视图和后台链接层,Dao是类和数据库链接,Services是类和类的链接,你要是这个不明白,我建议你回去学简单的
7、Controller也就是视图层
8、在Controller的Class上加一句 @Controller
9、在类里调用Services的抽象类 在抽象类的set方法上加一句 @Resource(name = "staffOfImp") name是你的services实体类定义的名字
报错说的是类型转换异常,和注入没啥关系吧。得看看userService和proxy.createProxy是不是同一类型,是不是能够强制转化吧。
给第一张图的userService加上get和set方法
你用的是jdk动态代理,但是底层怎么是cglib的代理类。
也有可能是切入点表达是写错了。。jdk的底层是要实现父接口的,如果切入点包含action的话会报错,cglib底层是给搞一个目标类的子类,所以不牵扯父接口的问题,其他的我也看不到实在是不知道还有什么错。
UserService UserService 你的类名和变量都是大写 冲突了
这里有一点浅见:
1、要使用动态代理设计代码,干嘛要注入bean呢,既然要注入bean就使用静态代理的方式;
2、createProxy()方法参数黏贴的不全,调用这个方法强转出错,应该是invoke()返回的类型不对吧,我没有深入研究过InvocationHandler接口,出发点不对。仅供参考。