如何在spring 項目中使用普通類調用service 方法!

今天在項目中碰到一個問題, 使用多綫程調用其他系統接口,在綫程實現中包含 @service 接口的調用! 這時候問題出現了,如果使用new 的方法會導致 service 類注入為 null,后將

Callable 實現類注入到spring 容器中,

另一個問題出現了,在綫程調用中出現了新的問題,儅第一次submit 后,沒有還沒有call 的時候第二次的調用導致第一次的參數被覆蓋!

 

最後換是回到之前的思路! 查了各種解決方案,經測試可用的方案特記錄下!

@Component
public class SeriesProductTask  implements Callable<Map<Long, Result>>

{

public static SeriesProductTask seriesProductTask;

public SeriesProductRelation seriesProductRelation;
public static  String addProduct = "addProduct";
public static  String editProduct = "editProduct";
public static  String delProduct = "delProduct";
public ClientInfo clientInfo;
public VenderInfo venderInfo;

@Resource
private SeriesWriteService seriesWriteService;

public static SeriesProductTask seriesProductTask;
@PostConstruct
public void init() {
seriesProductTask = this;
seriesProductTask.seriesWriteService = this.seriesWriteService;
}

public String action;
public void build(SeriesProductRelation seriesProductRelation, String action,ClientInfo clientInfo,VenderInfo venderInfo){
    this.setSeriesProductRelation(seriesProductRelation);
    this.setAction(action);
    this.setClientInfo(clientInfo);
    this.setVenderInfo(venderInfo);
}

@Override
public Map<Long, Result> call(){
    seriesProductTask.seriesWriteService.方法();
    }
}

類調用方法

@Service

class test{

      

private ExecutorService execSeriesProductPool = Executors.newCachedThreadPool();
public void test(){
     for(i = 1; i < 10 ; i ++){
         SeriesProductTask  task  = new SeriesProductTask();
         tesk.build();
         execSeriesProductPool.submit(task); 
     }
}

}

说明:

  被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器调用一次,类似于Serclet的inti()方法。

  被@PostConstruct修饰的方法会在构造函数之后,init()方法之前运行

有更好建議的也可以一起探討一下哦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值