关于增强的类
<!--配置的目标类-->
<bean name="studentDao" class="com.imooc.aspectJ.demo2.StudentDaoImp"></bean>
为什么测试用例中的对象是UserDao而不是UserDaoImp,
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import javax.annotation.Resource;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext2.xml")
public class SpringDemo2 {
@Resource(name = "studentDao")
private StudentDao studentDao;//这里不能使用 private StudentDaoImp studentDaoImp的原因是什么?
@Test
public void demo(){
studentDao.save();
studentDao.search();
studentDao.update();
studentDao.delete();
}
}
正在回答
同学你好!如果只是单纯注入是可以用实现类接收注入对象的,但是往往开发中会对实现类做增强,如事务,日志等,实现增强的AOP技术是通过动态代理实现的,而spring默认是JDK动态代理,对实现类对象做增强得到的增强类与实现类是兄弟关系,所以不能用实现类接收增强类对象,只能用接口接收。
如果我的回答解决了你的疑惑,请采纳,祝学习愉快~
- 参与学习 人
- 提交作业 205 份
- 解答问题 4317 个
Java中非常实用的SSM整合开发内容,从Spring开始,到MyBaits的进阶内容,再到SpringMVC的应用,最后是SSM整合开发案例,逐步深入,助你成长为一名Java工程师!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星