可能是Spring使用代理机制导致的(只看到错误信息和xml文件,大概猜测的原因)
使用JDK动态代理不支持类注入,只支持接口方式注入
如果想类注入可以使用cglib代理
你xml配置文件中注入service使用的是实现类而不是接口:
<bean id="accountService2" class="account.aop.service.AccountService2Impl"> <property name="accountDao2" ref="accountDao2"/> </bean>
应该改为:
<bean id="accountService2" class="account.aop.service.AccountService2"> <property name="accountDao2" ref="accountDao2"/> </bean>
注入dao部分应该也要类似修改。
<context:component-scan base-package="com.demo"/>
你把这行配置放到<bean>外边试试,不行我也看不出有什么毛病了
这里老师没有说清楚 由于复制项目上一个项目编程式的依赖注入 所以要把所有类依赖注入生成的import删除掉
项目jdk版本改为1.7
accountServiceProxy 类是用了代理设计模式重新包装了accountServicce 类, accountService在accountServiceProxy 中是以属性方式存在,代理类对其方法进行了包装, 增强,代理类是什么类型没有关系,不用和原类型一样的。
这个报错应该是因为读取不到配置文件aplicationContext.xml,路径改成classpath*:applicationcontext2.xml。
可以下载并在eclipse 上安装springsource tool suite 工具,可以引入命名空间,很方便
老师用的是MyEclipse ,eclipse 需要装插件xmlbuddy实现
都可以,异曲同工的效果,执行build path后,myeclipse自动将jar拷贝到web-inf/lib下
你要理解 只读事务的概念,推荐看一下这篇文章 http://boy00fly.iteye.com/blog/1142754
你要下载对应的包的源码包,然后Attached Source。
视频中应该是后缀为jar的源码src压缩包,并不是直接查看的.class文件。
只是不同方式而已,Service层也可以用@Resource @Autowired
1、@Resource是JDK中的注解;
2、@Component,@Repository,@Service,@Controller是Spring中提供的注解;
3、@Repository通常用于注解持久层的类,譬如***DAO,@Service通常用于注解业务层的类,譬如***Service,@Controller通常用于注解Web层的类,譬如***Controller,@Component用于注解受Spring容器管理的组件;带有这四个注解的类可以被Spring的IoC容器自动扫描到,无需在xml文件中配置;所谓注入,最简单的理解,就是将Java对象放到Spring的IoC容器中,完了就可以在程序中直接使用这些对象;
在使用所有注释前必须使用@RunWith(SpringJUnit4ClassRunner.class),让测试运行于Spring测试环境
Spring框架在org.springframework.test.annotation 包中提供了常用的Spring特定的注解集,如果你在Java5或以上版本开发,可以在测试中使用它。
这里配置的是你的service的代理类的注入,这里的异常感觉你好像配反了...检查一下你的配置文件看看
哈哈,自己挖的坑还得自己填写啊!!!!!! 多写了一个空格
注解里面有属性可以配置的。@Scope
看你的jdk和jar版本是否兼容,或者贴报错信息