Spring init-method和destroy-method 的使用

Spring init-method和destroy-method 的使用

 

  Spring 为了满足开发者在执行某方法之前或者在结束某个任务之前需要操作的一些业务,则提供了init-method和destroy-method  这两个属性,这两个属性需要加载在bean节点中。

  下面上代码部分,为了完整性,我把 IOC和 依赖注入也加入

  一、首先我们创建一个接口StudentService.java

 1 package cn.demo.service;
 2
 3 /**
 4  * 接口
 5  * @author xkjava
 6  * @date 2015-07-12
 7  */
 8 public interface StudentService {
 9
10     public void helloSpring(String str);
11
12 }

  

  二、StudentServiceImpl.java 实现类 

 1 package cn.demo.service.impl;
 2
 3 import java.io.Serializable;
 4
 5 import cn.demo.service.StudentService;
 6
 7 public class StudentServiceImpl implements StudentService,Serializable{
 8
 9
10     /**
11      *
12      */
13     private static final long serialVersionUID = 6130145558179499205L;
14
15
16     /**
17      * demo测试
18      */
19     @Override
20     public void helloSpring(String str) {
21         // TODO Auto-generated method stub
22         System.err.println("这里正常执行  this is "+str);
23     }
24
25     /**
26      * 执行helloSpring 之前执行
27      */
28     public void inits(){
29         System.err.println("这里在 执行helloSpring之前执行! ");
30     }
31
32
33     /**
34      * 摧毁 对象前调用
35      */
36     public void shutdown(){
37         System.err.println("销毁 studentService 对象实例 前 调用 shutdown() 方法");
38     }
39
40 }

  三、Spring XML文件

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
 4     xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"
 5     xsi:schemaLocation="
 6          http://www.springframework.org/schema/context
 7          http://www.springframework.org/schema/context/spring-context-3.0.xsd
 8      http://www.springframework.org/schema/beans
 9      http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
10      http://www.springframework.org/schema/tx
11      http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
12      http://www.springframework.org/schema/aop
13      http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
14
15     <!-- 注意 init-method 和 destroy-method 所加载的方法名字 和 StudentServiceImpl.java中对比 -->
16     <bean id="stu" class="cn.demo.service.impl.StudentServiceImpl" init-method="inits" destroy-method="shutdown"></bean>
17
18 </beans>

  四、TestDemo.java测试类

 1 package cn.demo.test;
 2
 3 import java.io.Serializable;
 4
 5 import org.springframework.beans.factory.annotation.Autowired;
 6 import org.springframework.context.ApplicationContext;
 7 import org.springframework.context.support.ClassPathXmlApplicationContext;
 8
 9 import cn.demo.service.StudentService;
10
11 /**
12  * 测试
13  * @author xkjava
14  *
15  */
16 public class TestDemo implements Serializable {
17
18
19     /**
20      *
21      */
22     private static final long serialVersionUID = 6343872716391435079L;
23
24
25     /**
26      * main入口
27      */
28     public static void main(String[] args){
29
30
31         ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml"});
32
33         StudentService studentService = context.getBean("stu", StudentService.class);
34
35         studentService.helloSpring("Hello! Spring!");
36
37         //摧毁studentService实例对象
38         ((ClassPathXmlApplicationContext) context).close();
39
40     }
41 }

 

   注意:

  在执行完毕后需要 将 ((ClassPathXmlApplicationContext) context).close();   Close 关闭 才可执行 destroy-method

时间: 2024-09-26 22:31:11

Spring init-method和destroy-method 的使用的相关文章

java代码中init method和destroy method的三种使用方式

在java的实际开发过程中,我们可能常常需要使用到init method和destroy method,比如初始化一个对象(bean)后立即初始化(加载)一些数据,在销毁一个对象之前进行垃圾回收等等. 周末对这两个方法进行了一点学习和整理,倒也不是专门为了这两个方法,而是在巩固spring相关知识的时候提到了,然后感觉自己并不是很熟悉这个,便好好的了解一下. 根据特意的去了解后,发现实际上可以有三种方式来实现init method和destroy method. 要用这两个方法,自然先要知道这两

Spring Instantiation with a factory method

Spring Init A Bean with Factory  1.静态工厂方法获取bean <bean id="clientService" class="examples.ClientService" factory-method=    "createInstance"/>  public class ClientService {             private static ClientService client

kendo method:destroy 解决有些在kendo.all.js 的js 库里报错问题

首先,不得不承认,kendo UI 是个不错的东西,特别对于一个前端开发到行不足的程序猿来说.而在我们使用过程中貌似还是会遇到各种奇怪的问题.比如我们会经常用到对一些控件进行重赋值. destroy 在kendo的configration 的Medhod 的描述是: Prepares the widget for safe removal from DOM. Detaches all event handlers and removes jQuery.data attributes to avo

Spring 通过工厂方法(Factory Method)来配置bean

Spring 通过工厂方法(Factory Method)来配置bean 在Spring的世界中, 我们通常会利用bean config file 或者 annotation注解方式来配置bean. 在第一种利用bean config file(spring xml)方式中, 还包括如下三小类 反射模式 工厂方法模式(本文重点) Factory Bean模式 其中反射模式最常见, 我们需要在bean 配置中指明我们需要的bean object的全类名. 例如: <bean id="car1

spring rest项目提示Request method &#39;PUT&#39; not supported Method Not Allowed 405 错误

{ "timestamp": "2019-04-28 17:43:07", "status": 405, "error": "Method Not Allowed", "message": "Request method 'PUT' not supported", "path": "/customer" } 今天项目发布后,发现

ServletContext结合Servlet接口中的init()方法和destroy()方法的运用----网站计数器

我们一般知道Servlet接口中的init()方法在tomcat启动时调用,destroy()方法在tomcat关闭时调用.那么这两个方法到底在实际开发中有什么作用呢?这就是这个随笔主要讲的内容. 思路:网站计数器,如果想在服务器关闭时,保留以前的访问量,最简单的方式是把访问数据放在数据库中,但这样会增加服务器的压力.所以ServletContext结合Servlet接口中的init()方法和destroy()方法的一起使用便可以做一个网站计数器. 把数据写在一个.txt文件中,在init()方

Invalid character found in method name. HTTP method names must be tokens

  o.apache.coyote.http11.Http11Processor : Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level. java.lang.IllegalArgumentException: Invalid character found in method name. HTTP metho

Python OOP(2)-static method,class method and instance method

静态方法(Static Method): 一种简单函数,符合以下要求: 1.嵌套在类中. 2.没有self参数. 特点: 1.类调用.实例调用,静态方法都不会接受自动的self参数. 2.会记录所有实例的信息,而不是为实例提供行为. 简单说staticmethod 无法访问类属性.实例属性,相当于一个相对独立的方法,跟类其实没什么关系,换个角度来讲,其实就是放在一个类的作用域里的函数而已. #!python2 #-*- coding:utf-8 -*- class A: v1="class ar

LINQ to Entities does not recognize the method &#39;Int32 ToInt32(System.String)&#39; method, and this method cannot be translated into a store expression

if (!string.IsNullOrEmpty(FarmWorkId)) { data = data.Where(p => p.TypeId == Convert.ToInt32(FarmWorkId)); } 解决方法: if (!string.IsNullOrEmpty(FarmWorkId)) { int i = Convert.ToInt32(FarmWorkId); data = data.Where(p => p.TypeId == i); } LINQ to Entities

spring init

DN学院讲师招募     Markdown编辑器轻松写博文     TOP 50 CTO坐镇直招     读文章说感想获好礼 通过Spring @PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作 分类: Spring 2013-03-16 16:48 24901人阅读 评论(1) 收藏 举报 关于在spring  容器初始化 bean 和销毁前所做的操作定义方式有三种: 第一种:通过@PostConstruct 和 @PreDestroy 方法