在service处理中,需要创建一个线程来完成后续工作,并且该线程需要传参,service在用taskExecutor创建线程后即可返回。
这种解决方案是否合理,或者有没有更优雅的办法完成这种主线程返回,把剩余任务交给其他线程的需求,欢迎大家指教。
而针对我采用的实现方式,因为线程类是new出来的,不是之前在spring配置文件中作为bean定义好的(因为不知道spring bean的方式怎么接收动态传入的参数),所以线程无法调用service层或者DAO层的spring bean。
于是在网上找了很多文章:
1)new ClassPathXmlApplicationContext("xxx.xml") 方式,此方式会重新创建一个application上下文,感觉不可取,除了耗费资源,与原来已经加载的上下文有没有冲突也不得而知。
2)通过实现ApplicationContextAware接口来创建工具类获取application上下文,工具类作为spring bean注入。这种方法没有尝试,只是想如果我的线程能访问到作为工具类的spring bean,那不也能访问service中的bean么?那还用工具类作甚?
3)WebApplicationContext context = ContextLoader.getCurrentWebApplicationContext();
参考 http://blog.csdn.net/zzhtheone/article/details/10061549
方案3)是发现的最简单优雅地获取上下文方法。