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

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

例如:

  1. ApplicationContext ac = new FileSystemXmlApplicationContext("applicationContext.xml");
  1. ac.getBean("beanId");
  1. //用此方法读取applicationContext.xml的配置文件。需要注意的是ac.getBean("beanId");获取上来的是一个Object
  1. 还需要注意的是他读取的这个配置文件是从系统文件根路径开始找。如果想用虚拟路径classpath需要写成如下模式:
  1. ApplicationContext ac = new FileSystemXmlApplicationContext("classpath:applicationContext.xml");
  1. ac.getBean("beanId");
  1.  
  1.  
  1. 同样还可以用:
  1. ApplicationContext factory=new ClassPathXmlApplicationContext("classpath:appcontext.xml");
  1. 此类模式去读取配置文件。
  1.  
  1. 换汤不换药,思想就是我们不能直接实例化他的对象,但是我们可以从配置中把他们读出来。
  1. 还可以用另外一个模式就是:
  1. ApplicationContext ac1 = WebApplicationContextUtils.getRequiredWebApplicationContext(ServletActionContext.getServletContext());
    ac1.getBean("");
  1. 此方法可以把所有交给Spring管理的都给获取出来,只需要ac1.getBean("");""中的名字与配置文件中的<bean id=""></bean>id相同即可。
  1.  
  1.  
  1. 暂时我只用到这两种方法

关于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. socket 上传文件代码

    server.py #!/usr/bin/env python# -*- coding:utf-8 -*- import socketimport os,hashlib ip_port = ('127 ...

  2. python 2 控制台传参,解包,编码问题初探

    python 2 控制台传参,需要从sys模块中导入argv,argv返回的第一个参数当前脚本(script)的文件名,后面是参数,参数个数必须和解包(unpack)时使用的参数个数一致 1.本例子演 ...

  3. 训练指南 UVALive - 3126(DAG最小路径覆盖)

    layout: post title: 训练指南 UVALive - 3126(DAG最小路径覆盖) author: "luowentaoaa" catalog: true mat ...

  4. 洛谷——P1017 进制转换

    P1017 进制转换 题目描述 我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置的(值减1)为指数,以10为底数的幂之和的形式.例如:123可表示为 1\times ...

  5. oracle 替换其中部分内容

    update TABLE_NAME set field =REPLACE(field ,substr(field ,0,1) ,'P') where field is not null ;

  6. HDOJ 4961 Boring Sum

    Discription Number theory is interesting, while this problem is boring. Here is the problem. Given a ...

  7. 【贪心】bzoj3721 PA2014 Final Bazarek

    考虑不限制奇偶的情况,那就是直接排序取前k个的和. 加上奇偶限制:若排序后的前k个的和是偶数,则“显然地”:将其中的最小的奇数替换成未被选择的数中最大的偶数 或者 将其中的最小的偶数替换成未被选择的数 ...

  8. python3 开发面试题(%s和format的区别)5.31

    在格式化字符串中有两种方法: 1.%s 2.format 大家常用的是哪一种方法?为什么要用你选的这种方法? 我们先看一个例子: 首先我们定义一个我军需要击杀的恐怖分子的地理坐标为 c=(128,12 ...

  9. Exercise02_17

    import javax.swing.JOptionPane; public class FrostTemperature { public static void main(String[] arg ...

  10. 微信小程序API·目录

    网络 媒体 文件 数据缓存 位置 设备 界面 第三方平台 开放接口 数据 更新 多线程 监控 调试接口 日志