Sau khi ứng dụng của tôi hoàn tất, tôi muốn đóng bối cảnh mùa xuân.
Mã liên quan có ApplicationContexttham chiếu nhưng tôi không thể tìm thấy closephương pháp.
Sau khi ứng dụng của tôi hoàn tất, tôi muốn đóng bối cảnh mùa xuân.
Mã liên quan có ApplicationContexttham chiếu nhưng tôi không thể tìm thấy closephương pháp.
Câu trả lời:
Downcast của bạn ApplicationContextđến phương thức ConfigurableApplicationContextxác định close():
((ConfigurableApplicationContext)appCtx).close();
AbstractApplicationContextlà một lớp và ConfigurableApplicationContextlà một giao diện được triển khai bởi lớp đó, có lẽ tốt hơn là sử dụng cái sau trong hầu hết các trường hợp.
ConfigurableApplicationContextbây giờ mở rộng Closable(không biết phiên bản thay đổi này được thực hiện, nhưng tài liệu cho 4.2.x hiển thị nó trong khi 3.0.x không) một phiên bản ngắn hơn nhiều ((Closable)context).close();.
AutoCloseablethực hiện, có nghĩa là một thử-với-nguồn lực bây giờ có thể được sử dụng, miễn là bạn lưu trữ nội dung của bạn trong một biến nơi AutoCloseablegiao diện có thể nhìn thấy, tức làtry (ConfigurableApplicationContext context = new ....) { /* your code goes here */ } // context is closed when you leave the try block
Bạn cần đăng ký một hook tắt với JVM như hình dưới đây:
((AbstractApplicationContext)appCtx).registerShutdownHook();
Để biết thêm thông tin, hãy xem: Hướng dẫn sử dụng Spring: 3.6.1.6 Tắt hộp chứa Spring IoC một cách duyên dáng trong các ứng dụng không phải web
Nếu bạn khởi tạo ngữ cảnh như bên dưới
ApplicationContext context = new ClassPathXmlApplicationContext(beansXML);
bối cảnh sạch sẽ như thế này
((ClassPathXmlApplicationContext) context).close();
Nếu Java SE 7 trở lên , không đóng, hãy sử dụng thử với tài nguyên để đảm bảo rằng mỗi tài nguyên được đóng ở cuối câu lệnh.
try(final AbstractApplicationContext applicationContext = new ClassPathXmlApplicationContext(new String[]{"classpath*:META-INF/spring/*.xml" }))
{
//write your code
}
Các bước để đóng ApplicationContextĐối tượng
ApplicationContextđối tượng sang ConfigurableApplicationContextđối tượng.thí dụ:
ApplicationContext context = new ClassPathXmlApplicationContext("mybeans.xml");
((ConfigurableApplicationContext)context ).close();
public static void main(String[] args) {
ApplicationContext context=new ClassPathXmlApplicationContext("SpringCnf.xml");
Resturant rstro1=(Resturant)context.getBean("resturantBean");
rstro1.setWelcome("hello user");
rstro1.welcomeNote();
((ClassPathXmlApplicationContext) context).close();
AbstractApplicationContext