“名为“xxx”的Bean的类型应该是“com”.xxx’,但实际上是’com.sun.proxy.$Proxy22’类型的。”

org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named ‘userDao’ is expected to be of type ‘first3.com.zut.aop.annotation.UserDaoImpl’ but was actually of type ‘com.sun.proxy.$Proxy12’
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:384)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:205)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1089)
at first3.com.zut.aop.annotation.TestAspectJ.test01(TestAspectJ.java:11)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner 2. e v a l u a t e ( P a r e n t R u n n e r . j a v a : 268 ) a t o r g . j u n i t . r u n n e r s . P a r e n t R u n n e r . r u n ( P a r e n t R u n n e r . j a v a : 363 ) a t o r g . j u n i t . r u n n e r . J U n i t C o r e . r u n ( J U n i t C o r e . j a v a : 137 ) a t o r g . j u n i t . r u n n e r . J U n i t C o r e . r u n ( J U n i t C o r e . j a v a : 115 ) a t o r g . j u n i t . v i n t a g e . e n g i n e . e x e c u t i o n . R u n n e r E x e c u t o r . e x e c u t e ( R u n n e r E x e c u t o r . j a v a : 40 ) a t j a v a . u t i l . s t r e a m . F o r E a c h O p s 2.evaluate(ParentRunner.java:268) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at org.junit.runner.JUnitCore.run(JUnitCore.java:115) at org.junit.vintage.engine.execution.RunnerExecutor.execute(RunnerExecutor.java:40) at java.util.stream.ForEachOps 2.evaluate(ParentRunner.java:268)atorg.junit.runners.ParentRunner.run(ParentRunner.java:363)atorg.junit.runner.JUnitCore.run(JUnitCore.java:137)atorg.junit.runner.JUnitCore.run(JUnitCore.java:115)atorg.junit.vintage.engine.execution.RunnerExecutor.execute(RunnerExecutor.java:40)atjava.util.stream.ForEachOpsForEachOp$OfRef.accept(Unknown Source)
at java.util.stream.ReferencePipeline$3 1. a c c e p t ( U n k n o w n S o u r c e ) a t j a v a . u t i l . I t e r a t o r . f o r E a c h R e m a i n i n g ( U n k n o w n S o u r c e ) a t j a v a . u t i l . S p l i t e r a t o r s 1.accept(Unknown Source) at java.util.Iterator.forEachRemaining(Unknown Source) at java.util.Spliterators 1.accept(UnknownSource)atjava.util.Iterator.forEachRemaining(UnknownSource)atjava.util.SpliteratorsIteratorSpliterator.forEachRemaining(Unknown Source)
at java.util.stream.AbstractPipeline.copyInto(Unknown Source)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
at java.util.stream.ForEachOps F o r E a c h O p . e v a l u a t e S e q u e n t i a l ( U n k n o w n S o u r c e ) a t j a v a . u t i l . s t r e a m . F o r E a c h O p s ForEachOp.evaluateSequential(Unknown Source) at java.util.stream.ForEachOps ForEachOp.evaluateSequential(UnknownSource)atjava.util.stream.ForEachOpsForEachOp O f R e f . e v a l u a t e S e q u e n t i a l ( U n k n o w n S o u r c e ) a t j a v a . u t i l . s t r e a m . A b s t r a c t P i p e l i n e . e v a l u a t e ( U n k n o w n S o u r c e ) a t j a v a . u t i l . s t r e a m . R e f e r e n c e P i p e l i n e . f o r E a c h ( U n k n o w n S o u r c e ) a t o r g . j u n i t . v i n t a g e . e n g i n e . V i n t a g e T e s t E n g i n e . e x e c u t e A l l C h i l d r e n ( V i n t a g e T e s t E n g i n e . j a v a : 80 ) a t o r g . j u n i t . v i n t a g e . e n g i n e . V i n t a g e T e s t E n g i n e . e x e c u t e ( V i n t a g e T e s t E n g i n e . j a v a : 71 ) a t o r g . j u n i t . p l a t f o r m . l a u n c h e r . c o r e . D e f a u l t L a u n c h e r . e x e c u t e ( D e f a u l t L a u n c h e r . j a v a : 229 ) a t o r g . j u n i t . p l a t f o r m . l a u n c h e r . c o r e . D e f a u l t L a u n c h e r . l a m b d a OfRef.evaluateSequential(Unknown Source) at java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.util.stream.ReferencePipeline.forEach(Unknown Source) at org.junit.vintage.engine.VintageTestEngine.executeAllChildren(VintageTestEngine.java:80) at org.junit.vintage.engine.VintageTestEngine.execute(VintageTestEngine.java:71) at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:229) at org.junit.platform.launcher.core.DefaultLauncher.lambda OfRef.evaluateSequential(UnknownSource)atjava.util.stream.AbstractPipeline.evaluate(UnknownSource)atjava.util.stream.ReferencePipeline.forEach(UnknownSource)atorg.junit.vintage.engine.VintageTestEngine.executeAllChildren(VintageTestEngine.java:80)atorg.junit.vintage.engine.VintageTestEngine.execute(VintageTestEngine.java:71)atorg.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:229)atorg.junit.platform.launcher.core.DefaultLauncher.lambdaexecute$6(DefaultLauncher.java:197)
at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:211)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:191)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:137)
at org.eclipse.jdt.internal.junit5.runner.JUnit5TestReference.run(JUnit5TestReference.java:89)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:41)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:541)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:763)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:463)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:209)

spring使用的动态代理有两种:JDK Proxy 和CGLIB。
问题出在这行代码上,不能用接口的实现类( UserServiceImpl)来转换Proxy的实现类,它们是同级,应该用共同的接口(UserService)来转换 **
UserDao userDao = applicationContext.getBean(“userDao”,
UserDaoImpl.class);
应改为:
UserDao userDao = applicationContext.getBean(“userDao”,
UserDao.class);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值