java类不能获取spring定义的Bean对象

xujun832 2014-03-24 04:34:23
初学ssh,我现在想在普通的java类中获取spring中配置的bean对象,我按网上说的定义了一个SpringBeanUtil类并实现org.springframework.context.ApplicationContextAware这个接口,如下

public Class SpringBeanUtil implements ApplicationContextAware{
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext arg0) throws BeansException{
SpringBeanUtil.applicationContext = arg0;
}

public static Object getBean(String name){
return applicationContext .getBean(name);
}
}

同时在applicationContext.xml中配置了该类的bean信息
<bean id="springBeanUtil " class="com.test.SpringBeanUtil "></bean>

此时我写了个测试类TestDemo来获取bean对象,但获取不到,SpringBeanUtil类中的applicationContext为null,也就是说spring容器在启动的时候没有给SpringBeanUtil类的applicationContext属性赋值,不知是什么原因,谢谢!
TestDemo
public class TestDemo{
public static void main(String[] args){
Object obj = SpringBeanUtil.getBean("userService");//其中userService是在applicationContext.xml配置的一个bean对象
}
}
...全文
563 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
kingkongzhang 2014-06-23
  • 打赏
  • 举报
回复
你这个问题最后咋解决的?
wyx100 2014-03-26
  • 打赏
  • 举报
回复
回复于: 2014-03-25 09:15:07 ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); (SpringBeanUtil)ac.getBean("userService"); 应该这样吧。 这是基本的获取bean的方式。
suciver 2014-03-25
  • 打赏
  • 举报
回复
引用 5 楼 xujun832 的回复:
[quote=引用 4 楼 suciver 的回复:] [quote=引用 3 楼 xujun832 的回复:] weblogic服务器启动了不是代表spring容器也启动了么?
weblogic启动了spring是启动了,但是spring上的所有bean都要在请求中才有,也就是说你是通过请求的才可以。而你在main方法里面根本和服务启不启动无关的,main方法是脱机的,可以单独执行的[/quote] 请问在main方法中启动spring容器是通过下面这个方式么? ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); 我加了这句之后,SpringBeanUtil.getBean("userService");还是获取不到对象啊,烦请帮我解答一下,万分感谢![/quote] ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");通过这个就可以启动spring了,还获取不到看看你spring的配置文件里面有叫userService的bean吗
  • 打赏
  • 举报
回复
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); (SpringBeanUtil)ac.getBean("userService"); 应该这样吧。 这是基本的获取bean的方式。
xujun832 2014-03-25
  • 打赏
  • 举报
回复
引用 4 楼 suciver 的回复:
[quote=引用 3 楼 xujun832 的回复:] weblogic服务器启动了不是代表spring容器也启动了么?
weblogic启动了spring是启动了,但是spring上的所有bean都要在请求中才有,也就是说你是通过请求的才可以。而你在main方法里面根本和服务启不启动无关的,main方法是脱机的,可以单独执行的[/quote] 请问在main方法中启动spring容器是通过下面这个方式么? ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); 我加了这句之后,SpringBeanUtil.getBean("userService");还是获取不到对象啊,烦请帮我解答一下,万分感谢!
xujun832 2014-03-25
  • 打赏
  • 举报
回复
引用 6 楼 fangmingshijie 的回复:
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); (SpringBeanUtil)ac.getBean("userService"); 应该这样吧。 这是基本的获取bean的方式。
我定义了一个userService这个Bean,通过(UserService)ac.getBean("userService");获取到了对象, 我调用userService的getUser方法,报PrpUser is not Mapped, 注:PrpUser是通过注解的方式完成映射的 请问这个问题该怎么处理
suciver 2014-03-24
  • 打赏
  • 举报
回复
引用 3 楼 xujun832 的回复:
weblogic服务器启动了不是代表spring容器也启动了么?
weblogic启动了spring是启动了,但是spring上的所有bean都要在请求中才有,也就是说你是通过请求的才可以。而你在main方法里面根本和服务启不启动无关的,main方法是脱机的,可以单独执行的
xujun832 2014-03-24
  • 打赏
  • 举报
回复
weblogic服务器启动了不是代表spring容器也启动了么?
suciver 2014-03-24
  • 打赏
  • 举报
回复
楼主你main方法里面就 一句Object obj = SpringBeanUtil.getBean("userService");什么时候启动spring了

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧