关于Spring管理的类如何创建对象。

来源:互联网 发布:python注释变什么颜色 编辑:程序博客网 时间:2024/04/28 11:07

              Blog是我刚开始接触java的时候申请的,写的一点点的自己领悟与点滴,现在看看有的东西已经忘却了,有的是简单的不值得一提,也挺有意思自己的一个成长历程。

   

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

 

               上面说了一堆的废话,下面说说解决方案,遇到这样的事以后呢,我们不用着急,既然我们创建不了它的对象了,我们可以选择另一种方式。就是通过读取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相同即可。
暂时我只用到这两种方法,现在的我还只是初学者,希望我的一点一滴可以给其他的朋友带来帮助即可。
具体深层次的代码我不知道原理,希望有大牛看到我的文章给予指点。