我在Eclipse中创建了一个小bean类。它在NetBeans中工作,但在Eclipse中它说
资源泄漏:' appContext'永远不会关闭。
我这样关闭appContext.close();
但它没有用。
// class drawingapplication
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class drawingapplication {
public static void main(String[] args) {
ApplicationContext appContext = new ClassPathXmlApplicationContext("spring.xml");
Triangle triangle =(Triangle) appContext.getBean("triangle");
triangle.draw();
}
}
// class Triangle
package org.spring.javabeans;
public class Triangle {
public void draw(){
System.out.println("triangle drawan");
}
}
// spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN""http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<bean id="triangle" class="org.spring.javabeans.Triangle"/>
</beans>
答案 0 :(得分:1)
ClassPathXmlApplicationContext
是ConfigurableApplicationContext
的子类,这意味着它实现了Closable
。
ApplicationContext
未展开Closeable
,因此无法在Closable#close()
类型的任何引用上调用ApplicationContext
方法。
但是,Eclipse检测到您正在分配类型ClassPathXmlApplicationContext
的值(需要关闭),并警告您应该关闭它,即使您无法通过引用类型你将它分配给变量。
您需要转换引用值或将其分配给实现Closeable
的类型的变量。
ClassPathXmlApplicationContext appContext = new ClassPathXmlApplicationContext("spring.xml");
然后,您可以正常调用close()
appContext.close();
答案 1 :(得分:0)
package org.spring.javabeans ;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class DrawingApplication {
public static void main(String[] args) {
ClassPathXmlApplicationContext appContext= new ClassPathXmlApplicationContext("Spring.xml");
Triangle triangle= (Triangle) appContext.getBean("triangle");
appContext.close();
triangle.draw();
}
}