Spring还使用基于 JSR-250 注释,它包括 @PostConstruct, @PreDestroy 和 @Resource 注释。
# @PostConstruct 和 @PreDestroy 注释为了定义一个 bean 的安装和卸载,我们使用 init-method 和/或 destroy-method 参数简单的声明一下 。init-method 属性指定了一个方法,该方法在 bean 的实例化阶段会立即被调用。同样地,destroy-method 指定了一个方法,该方法只在一个 bean 从容器中删除之前被调用。
你可以使用 @PostConstruct 注释作为初始化回调函数的一个替代,@PreDestroy 注释作为销毁回调函数的一个替代,看一个具体的例子来学习。
HelloWorld:
package com.sap;import javax.annotation.*;publicclassHelloWorld{private String message;publicvoidsetMessage(String message){this.message = message; }public String getMessage(){ System.out.println("Your Message : " + message);return message; }@PostConstructpublicvoidinit(){ System.out.println("Bean is going through init."); }@PreDestroypublicvoiddestroy(){ System.out.println("Bean will destroy now."); }}
在Main.app里注册一个关闭钩 registerShutdownHook() 方法,该方法在 AbstractApplicationContext 类中被声明。
import org.springframework.context.support.AbstractApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;publicclassMainApp {publicstaticvoidmain(String[] args){ AbstractApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml"); HelloWorld obj = (HelloWorld) context.getBean("helloWorld"); obj.getMessage(); context.registerShutdownHook(); }}
Beans.xml:
<beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"><context:annotation-config/><beanid="helloWorld"class="com.sap.HelloWorld"init-method="init"destroy-method="destroy"><propertyname="message"value="Hello World!"/>bean>beans>
输出:
【来源:汪子熙的游泳故事】
声明:转载此文是出于传递更多信息之目的。若有来源标注错误或侵犯了您的合法权益,请作者持权属证明与本网联系,我们将及时更正、删除,谢谢。 邮箱地址:[email protected]