SPRING 问题集

1. 多线程中引入SPRING自动注入的BEAN对象

需求:在Action中启动一个Thread去做一件事,因项目是通过spring的自动注入的Bean之前的依赖关系,在线程中的Service引用始 终无法得到对象,即使是new出来的,可Service中的Dao引用又是null的,可以通过在Action中创建Thread的时候把Action中 的service引用作为构造参数传递给Thread,这样Thread中的Service对象就是通过SPring的自动注入得到的了。

public class P4PInvoiceImportThread extends Thread {
……

    private IBizNormalInvoiceService bizNormalInvoiceService;

    private IBizP4PInvoiceService bizP4PInvoiceService;

    private IBatchExportFileManager batchExportFileManager;

    public P4PInvoiceImportThread(Long invoiceType, File file, String nick,
            boolean isNotifySeller) {

        this.bizNormalInvoiceService = (IBizNormalInvoiceService) BeanManager
                .getBean("bizNormalInvoiceService");
        this.bizP4PInvoiceService = (IBizP4PInvoiceService) BeanManager
                .getBean("bizP4PInvoiceService");
        this.batchExportFileManager = (IBatchExportFileManager) BeanManager
                .getBean("batchExportFileManager");

    }

……

}

2.真实的服务对象[$Proxy84]没有实现指定接口

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'p4pInvoiceServiceHsf' defined in URL [file:/home/admin/hjbill/.default/deploy/hjbill.war/WEB-INF/classes/config/hsf/billserver-hsf.xml]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: 真实的服务对象[$Proxy84]没有实现指定接口[com.taobao.huijin.bill.client.IP4PinvoiceService].

已有实现类,难道没有被扫描到吗?查看application-context.xml发现,已在扫描包路径内。

后来师兄过来帮忙查找原因,发现,bean名称与引用业务方提供的HSF服务同名了!!

妈蛋,竟然花了我的2个小时的时间去处理,看来分析问题的能力还是太弱了,有时问题发生不能仅看表面出错点,特别是check几遍之后,不要死扣着‘代码明明没问题啊,这不是我的问题啊。。X*()*&&*(’ 这只是将自己向死胡同引导。这时候更需要自己跳出这种想法,换另外一种思路:检查相关代码,特别是新创建spring的bean,对于业务上通常使用的词汇,要特别留心,不同与已有的重复。当然这个时候千万别被异常信息定位框死了。

在原有类似业务上做二次开发,缺少自己去写DAO,service的机会,碰到问题学习到的东西远多于照搬原有配置,所以每积累一次,都需要用心好好消化吸收。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值