首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Java类怎么获取Spring的Bean

2012-10-27 
Java类如何获取Spring的Bean 1.创建一个类并让其实现org.springframework.context.ApplicationContextAwar

Java类如何获取Spring的Bean

 1.创建一个类并让其实现org.springframework.context.ApplicationContextAware接口来让Spring在启动的时候为我们注入ApplicationContext对象.

  示例代码:

?


 ? view?plaincopy?to?clipboardprint?
  import?org.springframework.beans.BeansException;
  import?org.springframework.context.ApplicationContext;
  import?org.springframework.context.ApplicationContextAware;
  public?class?MyApplicationContextUtil?implements?ApplicationContextAware?{
  private?static?ApplicationContext?context;//声明一个静态变量保存
  @Override
  public?void?setApplicationContext(ApplicationContext?contex)
  throws?BeansException?{
  this.context=contex;
  }
  public?static?ApplicationContext?getContext(){
  return?context;
  }

  2.在applicationContext.xml文件中配置此bean,以便让Spring启动时自动为我们注入ApplicationContext对象.

  例:

?


 ? <!--?这个bean主要是为了得到ApplicationContext?所以它不需要其它属性-->?
  <bean?class="org.ing.springutil.MyApplicationContextUtil"></bean>  

  3.有了这个ApplicationContext之后我们就可以调用其getBean("beanName")方法来得到由Spring 管理所有对象.

?

?

4.在java中获得applicationContext引用:

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

?

public class ApplicationListener implements ServletContextListener {
?private static final Log log = LogFactory.getLog(ApplicationListener.class);

?public void contextDestroyed(ServletContextEvent arg0) {
???
?}

?
?public void contextInitialized(ServletContextEvent evt) {
??System.setProperty("user.timezone", "GMT+0800");// 服务器的时区应该是可以配置的
//??TimeZone.setDefault(TimeZone.getTimeZone("GMT+0800"));?//这个真TMD奇怪
??ServletContext sc = evt.getServletContext();

???
??//获取spring上下文
??ServletContext context = evt.getServletContext();
??ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(context);
??System.out.println("在这里向java类中传递ctx参数,可以在这里初始化,启动别的服务");
???
??evt.getServletContext().setAttribute("test",2);
??
???}
?}

?

在web.xml中配置如下:

<listener>
??<listener-class>
???com.listener.ApplicationListener
??</listener-class>
?</listener>

热点排行