Java类获取Spring中bean的5种方式
获取spring中的bean有很多种方式,再次总结一下:
第一种:在初始化时保存applicationcontext对象
applicationcontext ac = new filesystemxmlapplicationcontext("applicationcontext.xml"); ac.getbean("beanid");
说明:这种方式适用于采用spring框架的独立应用程序,需要程序通过配置文件手工初始化spring。
第二种:通过spring提供的工具类获取applicationcontext对象
import org.springframework.web.context.support.webapplicationcontextutils; applicationcontext ac1 = webapplicationcontextutils.getrequiredwebapplicationcontext(servletcontext sc); applicationcontext ac2 = webapplicationcontextutils.getwebapplicationcontext(servletcontext sc); ac1.getbean("beanid"); ac2.getbean("beanid");
说明:
1、这两种方式适合于采用spring框架的b/s系统,通过servletcontext对象获取applicationcontext对象,然后在通过它获取需要的类实例;
2、第一种方式在获取失败时抛出异常,第二种方式返回null。
第三种:继承自抽象类applicationobjectsupport
说明:通过抽象类applicationobjectsupport提供的getapplicationcontext()方法可以方便的获取到applicationcontext实例,进而获取spring容器中的bean。spring初始化时,会通过该抽象类的setapplicationcontext(applicationcontext context)方法将applicationcontext 对象注入。
第四种:继承自抽象类webapplicationobjectsupport
说明:和上面方法类似,通过调用getwebapplicationcontext()获取webapplicationcontext实例;
第五种:实现接口applicationcontextaware
说明:实现该接口的setapplicationcontext(applicationcontext context)方法,并保存applicationcontext对象。spring初始化时,会通过该方法将applicationcontext对象注入。
虽然spring提供了后三种方法可以实现在普通的类中继承或实现相应的类或接口来获取spring的applicationcontext对象,但是在使用时一定要注意继承或实现这些抽象类或接口的普通java类一定要在spring的配置文件(即application-context.xml文件)中进行配置,否则获取的applicationcontext对象将为null。
下面通过实现接口applicationcontextaware的方式演示如何获取spring容器中的bean:
首先自定义一个实现了applicationcontextaware接口的类,实现里面的方法:
package com.ghj.tool; import org.springframework.beans.beansexception; import org.springframework.context.applicationcontext; import org.springframework.context.applicationcontextaware; public class springconfigtool implements applicationcontextaware {// extends applicationobjectsupport{ private static applicationcontext ac = null; private static springconfigtool springconfigtool = null; public synchronized static springconfigtool init() { if (springconfigtool == null) { springconfigtool = new springconfigtool(); } return springconfigtool; } public void setapplicationcontext(applicationcontext applicationcontext)throws beansexception { ac = applicationcontext; } public synchronized static object getbean(string beanname) { return ac.getbean(beanname); } }
其次在applicationcontext.xml文件进行配置:
最后通过如下代码就可以获取到spring容器中相应的bean了:
注意一点,在服务器启动spring容器初始化时,不能通过以下方法获取spring容器:
import org.springframework.web.context.contextloader; import org.springframework.web.context.webapplicationcontext; webapplicationcontext wac = contextloader.getcurrentwebapplicationcontext(); wac.getbean(beanid);
以上就是本文的全部内容,希望对大家的学习有所帮助。
上一篇: Java连接Vmware中的redis
下一篇: Java单利模式与多线程总结归纳
推荐阅读
-
Java类获取Spring中bean的5种方式
-
深入解析Java的Spring框架中的混合事务与bean的区分
-
Java中Spring获取bean方法小结
-
利用反射获取Java类中的静态变量名及变量值的简单实例
-
Java高级特性——反射Reflection获取类的几种方式和利用反射对工厂模式解耦操作(代码示例)
-
详解Java的Spring框架中的事务管理方式
-
详解Java的Spring框架中bean的定义以及生命周期
-
深入解析Java的Spring框架中的混合事务与bean的区分
-
详解Java的Spring框架下bean的自动装载方式
-
Java的Spring框架中bean的继承与内部bean的注入