Springs XmlBeanFactory 已弃用
我尝试学习Spring。我正在关注这个网站 http://www.roseindia.net/spring/spring3/spring -3-hello-world.shtml
我尝试了其中的一个例子。我正在使用如下所示的一些内容,但这里显示:
XmlBeanFactory 类型已弃用
我必须使用什么来替代它?
public class SpringHelloWorldTest {
public static void main(String[] args) {
XmlBeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("SpringHelloWorld.xml"));
Spring3HelloWorld myBean = (Spring3HelloWorld)beanFactory.getBean("Spring3HelloWorldBean");
myBean.sayHello();
}
}
I try to learn Spring. I am following this site http://www.roseindia.net/spring/spring3/spring-3-hello-world.shtml
I tried one example in that. I am using some what like below, but here it shows:
The type XmlBeanFactory is deprecated
What do I have to use as an alternative to this?
public class SpringHelloWorldTest {
public static void main(String[] args) {
XmlBeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("SpringHelloWorld.xml"));
Spring3HelloWorld myBean = (Spring3HelloWorld)beanFactory.getBean("Spring3HelloWorldBean");
myBean.sayHello();
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(12)
这是替代代码,
Here is the substitute code,
获取 beans 上下文的新方法(无需类转换):
当启动应用程序范围的上下文时,应该使用
New way to get beans context (without class casting):
When starting an apppication-wide context one should use
您可以使用 ClassPathXmlApplicationContext 类。
You can use the ClassPathXmlApplicationContext class.
这个怎么样:
how about this:
这是最好的实施方式
Here is the best way to implement
Spring 文档中可找到 XMLBeanFactory 的替代方案
Alternative to XMLBeanFactory found on Spring documentation
使用“FileSystemXmlApplicationContext”作为
Use "FileSystemXmlApplicationContext" as
接受的答案中有一条警告“资源泄漏:'上下文'永远不会关闭”。
SO 帖子 Spring ApplicationContext - Resource Leak: 'context' is never close 中建议的解决方案修复了该问题。
希望它能帮助某人。
There is a warning "Resource leak: 'context' is never closed" with the accepted answer.
The solution suggested in the SO post Spring ApplicationContext - Resource leak: 'context' is never closed fixes the issue.
Hope it helps someone.
我认识到 ApplicationContext 和 XmlBeanFactory 在对象的运行时初始化方面存在巨大差异。
应用程序上下文立即调用对象构造函数,从而立即创建对象。
仅当调用 beanFactory.getBean(String name) 时,XmlBeanFactory 才会创建对象。
如果这对于问题域很重要,请尝试使用以下代码作为避免使用 XmlBeanFactory 的原始源的等效代码。
为了让 Captain Obvious 满意,下面是一个完整的比较示例。
首先是模型 Person.java。
然后是personbeans.xml中的对象数据。
以及调用对象的主要方法。
最有趣的部分是加载构造函数时与控制台输出中的输出“calling Employee constructor”的比较。
I recognized a huge difference between the ApplicationContext and the XmlBeanFactory regarding to the runtime initialization of the objects.
The applicationcontext calls the object constructors immediatly thus creating the objects at once.
The XmlBeanFactory creates an object only if the beanFactory.getBean(String name) is called.
If this is important for the problem domain give the following code a try as an equivalent to the origin source avoiding XmlBeanFactory.
To make Captain Obvious satisfied a full example with comparasion follows.
First there is the model Person.java.
Then the object data in the personbeans.xml.
And the main method who calls the objects.
The interssting part is the comparasion when the constructor is loaded with the output "calling Employee constructor" in the console output.
我尝试了以下代码
并且它有效
I tried the following code
and it works