关于目标类有实现接口的疑问

关于目标类有实现接口的疑问

老师,案例中的目标类是没有实现接口的,如果有实现接口我们该怎么操作,我胡乱常试了一下,但是报错了
我应该怎么修改?
//目标类的接口
public interface Product {

    public void save();

    public void update();

    public void delete();

    public void findOne();
    public void findAll();
}
//目标类
public class ProductDao implements Product {

    public void save(){
        System.out.println("保存商品...");
    }

    public void update(){
        System.out.println("修改商品...");
    }

    public void delete(){
        System.out.println("删除商品...");
    }

    public void findOne(){
        System.out.println("查询单个商品...");
    }
    public void findAll(){
        System.out.println("查询全部商品...");
    }


}
//切面类
@Aspect
public class MyAscpectAnno {

    //通知
    @Before(value = "execution(* com.zhou.aspectJ.demo1.ProductDao.*(..))")//调用目标类的任意方法都会使用前置增强
    public void before(){
        System.out.println("前置通知===========");
    }

}
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class SpringDemo1 {

    @Resource(name="productDao")
    private  ProductDao productDao;

    @Test
    public void test(){
        productDao.save();
        productDao.delete();
        productDao.findOne();
        productDao.update();
        productDao.findAll();
    }

}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans.xsd
   http://www.springframework.org/schema/aop
   http://www.springframework.org/schema/aop/spring-aop.xsd">

    <!-- 开启AspectJ自动代理-->
    <aop:aspectj-autoproxy />

    <!--配置目标类-->
    <bean id="productDao" class="com.zhou.aspectJ.demo1.ProductDao"/>

    <!--配置目标类接口-->
    <bean id="product" class="com.zhou.aspectJ.demo1.Product" abstract="true"/>

    <!--配置切面类: 不需要在其他地方引用时不需要写id-->
    <bean class="com.zhou.aspectJ.demo1.MyAscpectAnno"/>
</beans>


正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,1、建议同学将自己具体的报错信息贴出,便于老师根据报错定位问题。

        2、测试同学的代码,并没有按照正常的语法规范命名,老师修改对应的接口为dao,实现类为DaoImpl后,例如:

http://img1.sycdn.imooc.com//climg/5e7b05960953798702360123.jpg

http://img1.sycdn.imooc.com//climg/5e7b063109143fc308750711.jpg

可以正常的运行。

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~

  • jia_蛙 提问者 #1
    麻烦老师看一下
    2020-03-25 15:52:01
提问者 jia_蛙 2020-03-25 15:51:48
因为案例中把ProductDao当作目标类,我在做这个测试之前为了方便把就没去修改,然后创建了
一个名Product的目标类接口,这就导致后面出现了很多问题。我已经重写修改了类名,还把我开始
在xml中配置的接口类给删掉了,只留了一个目标类的配置,我一开始以为如果目标类实现了接口
的话也要在xml中配置一下接口,之后我又将目标类注入到测试类的接口的实例对象中。
经过测试就好了。我写着写着突然发现:
<bean id="productDao" class="com.zhou.aspectJ.demo1.ProductDaoImpl"/>
这种语句点陌生了,就知道要这么配置,它到底表达什么我有点忘记了。老师你能跟我说一下吗


  • 同学你好,<bean id="productDao" class="com.zhou.aspectJ.demo1.ProductDaoImpl"/>-->就是在向spring中注入一个bean,id(唯一标识)为productDao,对应的类为路径及类名为com.zhou.aspectJ.demo1.ProductDaoImpl。 如果我的回答解决了你的疑惑,请采纳,祝学习愉快~
    2020-03-25 19:10:29
  • 提问者 jia_蛙 回复 好帮手慕小班 #2
    也就是将这个bean对象交给spring管理是吧
    2020-03-25 19:21:31
  • 好帮手慕小班 回复 提问者 jia_蛙 #3
    同学的理解是正确的。继续加油,祝:学习愉快~
    2020-03-26 09:37:25
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师