spring bean的定义和调用

我对spring了解不是很深入,暂时了解的只有ioc和webmvc那一块,现在的问题是接手另外一个项目,它里面全用的spring,发现一个很崩溃的问题,他在applicationContext.xml里面定义了一大坨一大坨的beans,可是我在项目里面就没见到哪里去get这些beans,很郁闷,什么情况下会导致这样的事情发生?

还有很多 比如spring rcp里 spring把swing都封装起来了 换句话说就是swing全都被spring容器掌控了,在客户端点按钮了,之类的操作,也没明显的调用getBean啊 只是spring rcp已经给封装(我不用去容器里取,因为我就在这个容器的大环境里) 虽然不用getBean可能看起来无法实例化 但是其实也不尽然。 呵呵 只是把这个getBean里进行的操作藏起来了。

都已经注入了,不会显式地用getBean方法去取这些bean啊,

都自动被管理了,

可以吧你的配置文件粘贴出来吗?

是不是配置了autowire了,全局都用自动注入了

1 有些bean已经注入到其他的bean中,在xml文件中你看有没有
2 如果使用了struts,那么这些bean可能会在struts中使用
3 在实际项目中不会遍地用getBean获取数据的

如果你担心没有用到的话,就去找源头,拿一个感觉很重要的bean,看这个被注入的属性在什么地方用到,然后进行向上查找。

private AbstractApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
BeanType bean =(BeanType)ctx.getBean("beanName");
就可以调用了
或者通过applicationContext.xml配置.

本来就不需要显式地去调用getBean方法来取bean,都已经自动注入了嘛,这才是真正的依赖注入,哪需要显式地调用

Spring自动管理beans 不需要获取呀!呵呵!

你说这种情况那是自己在玩的时候写的,

做项目中使用了一些框架,都是由框架内部来调用(也就是你所说的C),不用项目里自己去调

applicationContext.xml中一般都是通过Spring框架为项目定义的一些基本的信息,如项目版本,初始化一些bean工厂等信息。这些信息在加载Spring上下文时就自动加载相关的bean,调用的代码都封装到了Spring中了,所以你看不到**.getBean("")这样的代码。

当然可以不用了。
举个例子
[quote]public AbstractVodProcess(){
((AutowireCapableBeanFactory) BeanFactoryHolder.get())
.applyBeanPropertyValues(this, "abstractVodProcess");
}[/quote]
你用getBean()了么?没用吧 只是它初始化了这个beanfactory,然后去调用这个beanfactory里的applyBeanPropertyValues(this, "-bean的名字--");方法进行赋值,拼属性啊。