spring新手--一个简单的问题(sprinf bean的销毁)

问题描述

小弟初学spring,可是在销毁bean的时候,代码如下:applicationContext.xml<beans <br="">xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"><bean id="user" class="com.xznu.springdemo.UserBean" <br="">abstract="false" lazy-init="default" autowire="default"dependency-check="default"  ></bean></beans>UserBean.javapackage com.xznu.springdemo;import org.springframework.beans.factory.DisposableBean;import org.springframework.beans.factory.InitializingBean;public class UserBean implements InitializingBean,DisposableBean{private String name;private int age;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public void afterPropertiesSet() throws Exception {// 继承初始化接口name = "wwx";age = 23;}public void destroy() throws Exception {// 继承销毁接口name = null;age = 0;System.out.println("以销毁!"+this.name);}}MainDemo.javapackage com.xznu.springdemo;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import org.springframework.context.support.FileSystemXmlApplicationContext;public class MainDemo {public static void main(String args[]){ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");UserBean userBean = (UserBean)context.getBean("user");System.out.println("name:"+userBean.getName());System.out.println("age:"+userBean.getAge());}}只能初始化,却能销毁Bean,,不知道怎么回事?十分郁闷。。望高手给解决一下!谢谢!

解决方案

你的问题应该是: 只能初始化,却不能销毁Bean 吧.之所以没有依据你的预期调用DisposableBean.destroy()方法,是由于,整段代码结束了. 哈哈.将代码改成下面这样:public static void main(String args[]) {ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("user.xml");context.registerShutdownHook();UserBean userBean = (UserBean) context.getBean("user");System.out.println("name:" + userBean.getName());System.out.println("age:" + userBean.getAge());}注意这一句: context.registerShutdownHook();其实, 它内部就是给 Runtime.getRuntime().addShutdownHook(this.shutdownHook);也就是在jvm停掉之前执行 this.shutdownHook 里面定义的事情.只有使用context.registerShutdownHook(); 注册了shutdownHook, 才可以触发剩下的事情, 比如说 DisposableBean.destroy()方法.
解决方案二:
记得 在Spring的文档的bean的生命周期一节中讲过了 ???

时间: 2024-10-07 07:53:07

spring新手--一个简单的问题(sprinf bean的销毁)的相关文章

java 自学 新手-一个简单的Java 计算问题

问题描述 一个简单的Java 计算问题 输出结果总是0,大牛们,可不可以告诉我错在哪里了!代码如下package HelloWorld;import java.util.Scanner;public class Tax { public static void main(String[] args) { double a = 0.0b=0.0;//定义工资为a个人所得税为b; System.out.println(""请输入您的月工资,我们将严密计算您的个人所得税!"&quo

spring新手配置一个bean使用构造注入constructor-arg总是报错

问题描述 spring新手配置一个bean使用构造注入constructor-arg总是报错 spring新手求助! 最简单的配置了一个bean, Way里有一个构造方法 public Way(int num) { this.num = num; } 然后总是报下面错: 信息: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@67b6d4ae:

Spring框架讲解-一个简单的实践

一,场景:编写一个用户管理的服务层,包括增加用户.删除用户和查询用户等等,而且用户信息以关系型数据库形式存储.分析:这是一个典型的应用服务,涉及到业务层(Business Objects Layer).数据库访问层(DB Access)和存储层(EIS).采用典型的架构:BO+DAODAO采用Spring提供的JdbcTemplate来进行封装. 二,具体实现 1)用户类Userpublic class User{          private String username;       

使用Spring来创建一个简单的工作流引擎_Java编程

文章来源:matrix 作者:Steve Dodge 摘要 spring是支持控制反转编程机制的一个相对新的框架.本文把spring作为简单工作流引擎,将它用在了更加通用的地方.在对工作流简单介绍之后,将要介绍在基本工作流场景中基于Spring的工作流API的使用. 许多J2EE应用程序要求在一个和主机分离的上下文中执行处理过程.在许多情况下,这些后台的进程执行多个任务,一些任务依赖于以前任务的状态.由于这些处理任务之间存在相互依赖的关系,使用一套基于过程的方法调用常常不能满足要求.开发人员能够

spring mvc-初学spring,想做一个简单的登入验证功能,报404错误,已被困扰一天了,跪求帮助

问题描述 初学spring,想做一个简单的登入验证功能,报404错误,已被困扰一天了,跪求帮助 项目用ecliper ee开发,jdk1.7+mysql+tomcat环境.初学spring,想做一个简单的页面登入验证功能,报404错误,用了spring mvc,在Controller类里打了断点发现程序根本没有执行Controller类,检查了n遍配置文件感觉都是对的.这个bug已经困扰我一天多了,跪求帮助!! 页面错误信息 项目目录结构 web.xml 配置 applicationContex

深入实践Spring Boot1.3.2 一个简单的实例

1.3.2 一个简单的实例 Spring Boot的官方文档中提供了一个最简单的Web实例程序,这个实例只使用了几行代码,如代码清单1-3所示.虽然简单,但实际上这已经可以算作是一个完整的Web项目了. 代码清单1-3 Spring Boot简单实例 package springboot.example;   import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigu

Spring(一)之IOC、bean、注入

spring简介 spring的优势 概览 典型的完整Spring Web应用的模式图 IoC控制反转容器 简介 基本原理 - 容器和bean bean 容器 基于XML配置配置元数据 实例化容器 XML配置元数据的结构 bean 多种bean bean定义 bean的命名 bean的别名 实例化bean 使用静态工厂方法实例化 bean的作用域 Singleton作用域单例模式 Prototype作用域实例 Singleton beans和prototype-bean的依赖 其他作用域 初始化

springmvc-用jsp写一个简单的登录页面

问题描述 用jsp写一个简单的登录页面 求写一个登录页面,有form表单,然后能提交到数据库.框架是spring,数据库是sql,用java,jsp写..我是新手,所以恳求大神帮帮我.非常感谢谢.. 解决方案 form表单里面放输入框组,用于填写数据,像登陆这种涉及隐私的操作,最好使用post方式提交, 在action层,我看到你只提到了spring,那就直接servlet来接收数据进行处理,在doPost中通过request.getParameter(str)获取参数,经过一系列校验之后,就可

Spring-Context之一:一个简单的例子

很久之前就想系统的学习和掌握Spring框架,但是拖了很久都没有行动.现在趁着在外出差杂事不多,就花时间来由浅入深的研究下Spring框架.Spring框架这几年来已经发展成为一个巨无霸产品.从最初的只是用来作为依赖注入到现在已经是无法不包.其涉及的领域有依赖注入.MVC.JMS.Web flow.Batch job.Web service.Security-..几乎是涵盖了技术开发的所有方面.本人虽然从事Java语言开发时间不长,但是对Spring中的很多组件都有所涉猎,比如上面列出的那几个都