今天项目中出现了空指针错误,其实一看这个错误我就知道是哪里错了。而且以前也总是说,没有真正的改过啊。今天把改进方法和大家共享。现在我们的项目中,大多数我们的管理方式都是交由Spring去管理,至于好处我也不多于的赘述了,用的人都知道,Spring也把他的管理发挥到了极致,真的是到了极致啊。以至于交给Spring管理的如果实例化其对象就会报错,错误报的是空指针错误,原因估计是因为没有注入进来,我们实例化对象的时候破坏的Spring的管理。

http://blog.csdn.net/kobe_lzq/article/details/4516362           上面说了一堆的废话,下面说说解决方案,遇到这样的事以后呢,我们不用着急,既然我们创建不了它的对象了,我们可以选择另一种方式。就是通过读取Spring的配置文件,获取其中的bean这样来获取此对象,即可以解决。

例如:

ApplicationContext ac = new FileSystemXmlApplicationContext("applicationContext.xml");
      ac.getBean("beanId");  
//用此方法读取applicationContext.xml的配置文件。需要注意的是ac.getBean("beanId");获取上来的是一个Object
还需要注意的是他读取的这个配置文件是从系统文件根路径开始找。如果想用虚拟路径classpath需要写成如下模式:
        
ApplicationContext ac = new FileSystemXmlApplicationContext("classpath:applicationContext.xml");
      ac.getBean("beanId");  


同样还可以用:
 ApplicationContext factory=new ClassPathXmlApplicationContext("classpath:appcontext.xml");
此类模式去读取配置文件。

换汤不换药,思想就是我们不能直接实例化他的对象,但是我们可以从配置中把他们读出来。
还可以用另外一个模式就是:
ApplicationContext ac1 = WebApplicationContextUtils.getRequiredWebApplicationContext(ServletActionContext.getServletContext()); 
ac1.getBean("");
此方法可以把所有交给Spring管理的都给获取出来,只需要ac1.getBean("");""中的名字与配置文件中的<bean id=""></bean>id相同即可。


暂时我只用到这两种方法

关于Spring管理的类如何创建对象的更多相关文章

  1. 一个没被spring管理的类怎么创建对象并使用里面的方法

    一个对象new出来的,如果不是构造器注入@Data 也不好使啊,尝试构造器注入一下,或者set进去 第二次尝试使用这个. 向这种只能构造器注入或者通过上面的set方法来注入了,component是不好 ...

  2. spring管理的类如何调用非spring管理的类

    spring管理的类如何调用非spring管理的类. 就是使用一个spring提供的感知概念,在容器启动的时候,注入上下文即可. 下面是一个工具类. import org.springframewor ...

  3. Spring Boot集成Quartz注入Spring管理的类

    摘要: 在Spring Boot中使用Quartz时,在JOB中一般需要引用Spring管理的Bean,通过定义Job Factory实现自动注入. Spring有自己的Schedule定时任务,在S ...

  4. 在JBPM的Handle类中调用Spring管理的类

    我们在使用JBPM定义流程的时候经常要在流程定义文件中加入一个继承xxxHandler的类来实现我们的业务逻辑判断或者其他的需求,在这个类中一般都是用Spring的Application来获取,而这种 ...

  5. 没有纳入spring管理的类如何注入spring管理的对象

    spring 如何在普通类中调用注入的对象? spring 在Thread中注入@Resource失败,总为null~解决 springmvc 注入总是空指针异常? 以上的几个问题就是我在项目中遇到的 ...

  6. 在spring管理的类的要注意问题

    特别时写框架的时候, 注意依赖引用,类的成员变量不要随便new,看spring容器中是否管理过,new出来的时其他的对象了

  7. 如何在非Spring管理的类中使用Spring加载的bean

    <dependencies> <dependency> <groupId>org.springframework.boot</groupId> < ...

  8. 使用Spring框架来管理模板类

    1. 刚才编写的代码使用的是new的方式,应该把这些类交给Spring框架来管理. 2. 修改的步骤如下 applicationContext.xml中<beans>标签的开头配置为: * ...

  9. 170630、springboot编程之普通类中调用spring管理的bean对象

    我们知道如果我们要在一个类使用spring提供的bean对象,我们需要把这个类注入到spring容器中,交给spring容器进行管理,但是在实际当中,我们往往会碰到在一个普通的Java类中,想直接使用 ...

随机推荐

  1. selenium grid 环境搭建

    一.selenium grid简介 selenium grid可以同时在不同机器上测试不同浏览器,包含一个hub和多个node.node会发送配置信息到hub,hub记录并跟踪每一个node的配置信息 ...

  2. [scrapy] PIL老是出错,换成pillow解决问题

    使用scrapy下载图片的时候,用PIL老是下载不成功 出现如下错误: IOError: encoder jpeg not available 据说是安装PIL之前缺少一些相关的包 freetype ...

  3. RASscan

    内网端口极速扫描器 软件下载地址:https://github.com/RASSec/RASscan 命令: Python Rasscan.py 网络第一个ip 网络最后一个ip

  4. (20)python pycharm

    使用GitHub 一·登录GitHub 1. 2. 3. 4. 二. 登录成功后再配置git 1 2.创建项目到github 3.下载github

  5. codeforces 869C The Intriguing Obsession【组合数学+dp+第二类斯特林公式】

    C. The Intriguing Obsession time limit per test 1 second memory limit per test 256 megabytes input s ...

  6. Placement new的用法及用途【转】

    什么是placement new? 所谓placement new就是在用户指定的内存位置上构建新的对象,这个构建过程不需要额外分配内存,只需要调用对象的构造函数即可.举例来说: class foo{ ...

  7. Xamarin XAML语言教程构建ControlTemplate控件模板

    Xamarin XAML语言教程构建ControlTemplate控件模板 控件模板ControlTemplate ControlTemplate是从Xamarin.Forms 2.1.0开始被引入的 ...

  8. lapis使用

    lapis: 安装 http://leafo.net/lapis/ 官网安装方式依赖lua-cjson,但是已经安装了openresty的可能会报错. 解决方法,使用下面issue中的luarocks ...

  9. 8.1(java学习笔记)注解(Annotation)

    一.Annotation Annotation不是程序本身,但它可以对程序进行解释,这一点和注释类似. 但最大的不同点在于,注解可以被其他程序读取,然后可以对其进行一些有针对性操作. 这是注解与注释最 ...

  10. React Native之ES5/ES6语法差异对照表

    很多React/React Native的初学者都被ES6的问题迷惑:各路大神都建议我们直接学习ES6的语法(class Foo extends React.Component),然而网上搜到的很多教 ...