关于在spring  容器初始化 bean 和销毁前所做的操作定义方式有三种:

第一种:通过@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作

第二种是:通过 在xml中定义init-method 和  destory-method方法

第三种是:通过bean实现InitializingBean和 DisposableBean接口

下面演示通过  @PostConstruct 和 @PreDestory

1:定义相关的实现类:

     package com.myapp.core.annotation.init;  

     import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy; public class PersonService { private String message; public String getMessage() {
return message;
} public void setMessage(String message) {
this.message = message;
} @PostConstruct
public void init(){
System.out.println("I'm init method using @PostConstrut...."+message);
} @PreDestroy
public void dostory(){
System.out.println("I'm destory method using @PreDestroy....."+message);
} }

2:定义相关的配置文件:

     <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="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.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd"> <!-- <context:component-scan base-package="com.myapp.core.jsr330"/> --> <context:annotation-config /> <bean id="personService" class="com.myapp.core.annotation.init.PersonService">
<property name="message" value="123"></property>
</bean> </beans>

其中<context:annotation-config />告诉spring 容器采用注解配置:扫描注解配置;

测试类:

     package com.myapp.core.annotation.init;  

     import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; public class MainTest { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("resource/annotation.xml"); PersonService personService = (PersonService)context.getBean("personService"); personService.dostory();
} }

测试结果:

I'm  init  method  using  @PostConstrut....123
I'm  destory method  using  @PreDestroy.....123

其中也可以通过申明加载org.springframework.context.annotation.CommonAnnotationBeanPostProcessor

类来告诉Spring容器采用的 常用 注解配置的方式:

只需要修改配置文件为:

     <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="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.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd"> <!-- <context:component-scan base-package="com.myapp.core.jsr330"/> --> <!-- <context:annotation-config /> --> <bean class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor" />
<bean id="personService" class="com.myapp.core.annotation.init.PersonService">
<property name="message" value="123"></property>
</bean> </beans>

同样可以得到以上测试的输出结果。

最新文章

  1. c# Enumerable中Aggregate和Join的使用
  2. 【Network】golang 容器项目 flannel/UDP相关资料
  3. 关于nodejs能同时接受多少个请求的问题?////zzz
  4. Javascript日期时间总结
  5. DLL注入之注册表
  6. PHP 遍历数组的方法汇总
  7. Collections的排序之一(Java)
  8. Scroll滚动后发生的改变
  9. java final 关键字醍醐灌顶
  10. ASP.NET Excel导入Sql Server数据库(转)
  11. Java URL类踩坑指南
  12. POJ 2187 Beauty Contest [凸包 旋转卡壳]
  13. 动态规划----最长递增子序列问题(LIS)
  14. yiming
  15. 用canvas把页面中所有元素的轮廓绘制出来
  16. Java Web(三) Servlet会话管理
  17. User_Agent大全
  18. Android 自定义 ListView 显示网络上 JSON 格式歌曲列表
  19. SQL2008无法连接到(local),该账户当前被锁定,所以Sa用户登陆失败
  20. PHP下载APK文件

热门文章

  1. Sql Server 查看表修改记录
  2. git学习心得总结
  3. Psp个人软件开发软件需求分析和用例分析
  4. win7配上的网关会自动消失?解决
  5. 第五篇——C++实现四则运算
  6. SWFUpload - JQuery上传插件
  7. Objective-C如何对内存管理的?
  8. 一次偶然的Java内存溢出引发的思考
  9. 第一章 web应用程序开发原理
  10. NO.3 CAS配置问题汇总