Spring Mvc线程中对象的使用
2016-08-08 15:34
309 查看
开发中为了运行效率,我们会将一些非主流程游比较耗时间的操作剥离出主线程操作,另起一个线程处理,但在刚接触spring线程的时候,对对象的处理出现了问题,在使用的对象的时候依旧用了比较传统的@Resource注入,但运行之后却报空指针异常,请教别人之后才知道线程中无法使用注解注入对象,web容器启动之前是不会注入线程中的对象的,线程启动时web容器也无法感知。那我们在线程中如何使用spring容器中的对象呢?我们可以使用spring上下文直接获取spring容器中的对象,将线程的分发与实现分离。首先定义工具类:记住该工具类也要被配置为spring的bean,否则无法实例化ApplicationContext导致空指针异常。在你的springbean配置文件加入如下配置:
<bean id="springBeanUtils" class="com.hujin.common.util.SpringBeanUtils"/>此外。要实现ApplicationContext的自动装配,还需要在web.xml文件中加入如下配置:
<context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/spring-*.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>ContextLoaderListener的作用就是启动Web容器时,自动装配ApplicationContext的配置信息,context-param指定读取的spring配置,以上配置缺一不可,否则会导致空指针异常。此外还有一个注意点,这是我犯得一个错误也在这儿说一下。我开始取bean的时候这样定义,发现报了NoBeanDefinition的错
private SupplyPoMapper supplyPoMapper = (SupplyPoMapper)SpringBeanUtils.getBean("SupplyPoMapper");将getBean中的SupplyPoMapper改为小写supplyPoMapper解决了问题,spring注解扫描类到容器中时以小写字母开头命名。
相关文章推荐
- WPF中使用Free解决访问非UI线程创建的对象抛出的Thread异常
- MFC中CAsyncSocket及其派生类对象跨线程使用方法
- boost::thread 使用函数对象来构造线程对象的问题
- 使用事件对象实现线程间的同步
- 学习pthreads,使用属性对象创建结合线程和分离线程
- Java线程同步使用的“监视器”和“对象锁"
- Qt在线程中使用QAxObject,获取对象为空问题
- 学习pthreads,使用属性对象创建结合线程和分离线程
- 使用对象去暂停或锁住一个线程的方式
- MFC中CAsyncSocket及其派生类对象跨线程使用方法
- JProfiler的详细使用介绍(JVM对象内存线程监测工具)【转】
- Spring Mvc使用Jackson进行json转对象时,遇到的字符串转日期的异常处理(Can not deserialize value of type Date from String)
- 使用管道流和多线程完成以下任务要求: 一个线程对象t1 会从控制台中不停的读取信息,读到之后把数据交给管道输出流,把数据写到管道里面 ,另一个线程对象t2 不停的使用管道输入流从管道
- 使用对象去暂停或锁住一个线程的方式
- BCB6 使用线程对象
- Java多线程编程-(5)-使用Lock对象实现同步以及线程间通信
- springmvc mybatis 配置一对多的关系使用 <association> 及实体类写法2Spring MVC 会按请求参数名和 POJO 属性名进行自动匹配自动为该对象填充属性值。支持
- JAVA之旅(十二)——Thread,run和start的特点,线程运行状态,获取线程对象和名称,多线程实例演示,使用Runnable接口
- MFC中CAsyncSocket及其派生类对象跨线程使用方法
- 在子线程中如何使用Handler将一个包含对象的集合传递给主线程