Spring实战之使用@POSTConstruct和@PreDestroy定制生命周期行为操作示例

网友投稿 672 2023-07-03

Spring实战之使用@POSTConstruct和@PreDestroy定制生命周期行为操作示例

Spring实战之使用@POSTConstruct和@PreDestroy定制生命周期行为操作示例

本文实例讲述了Spring实战之使用@POSTConstruct和@PreDestroy定制生命周期行为操作。分享给大家供大家参考,具体如下:

一 配置

xmlns:xsi="http://w3.org/2001/XMLSchema-instance"

xmlns:context="http://springframework.org/schema/context"

xsi:schemaLocation="http://springframework.org/schema/beans

http://springframework.org/schema/beans/spring-beans-4.0.xsd

http://springframework.org/schema/context

http://springframework.org/schema/context/spring-context-4.0.xsd">

base-package="org.crazyit.app.service"/>

xmlns:xsi="http://w3.org/2001/XMLSchema-instance"

xmlns:context="http://springframework.org/schema/context"

xsi:schemaLocation="http://springframework.org/schema/beans

http://springframework.org/schema/beans/spring-beans-4.0.xsd

http://springframework.org/schema/context

http://springframework.org/schema/context/spring-context-4.0.xsd">

base-package="org.crazyit.app.service"/>

base-package="org.crazyit.app.service"/>

二 接口

Axe

package org.crazyit.app.service;

public interface Axe

{

public String chop();

}

Person

package org.crazyit.app.service;

public interface Person

{

public void useAxe();

}

三 Bean

Chinese

package org.crazyit.app.service.impl;

import org.springframework.stereotype.*;

import javax.annotation.*;

import org.crazyit.app.service.*;

@Component

public class Chinese implements Person

{

// 执行Field注入

@Resource(name="steQiCIxdvtpHelAxe")

private Axe axe;

// 实现Person接口的useAxe()方法

public void useAxe()

{

// 调用axe的chop()方法,

// 表明Person对象依赖于axe对象

System.out.println(axe.chop());

}

@PostConstruct

public void init()

{

System.out.println("正在执行初始化的init方法...");

}

@PreDestroy

public void close()

{

System.out.println("正在执行销毁之前的close方法...");

}

}

SteelAxe

package org.crazyit.app.service.impl;

import org.springframework.stereotype.*;

import org.crazyit.app.service.*;

@Component

public class SteelAxe implements Axe

{

public String chop()

{

return "钢斧砍柴真快";

}

}

StoneAxe

package org.crazyit.app.service.impl;

import org.springframework.stereotype.*;

import org.crazyit.app.service.*;

@Component

public class StoneAxe implements Axe

{

public String chQiCIxdvtpHop()

{

return "石斧砍柴好慢";

}

}

四 测试类

package lee;

import org.springframework.context.*;

import org.springframework.context.support.*;

import org.crazyit.app.service.*;

public class BeanTest

{

public static void main(String[] args)

{

// 创建Spring容器

AbstractApplicationContext ctx = new

ClassPathXmlApplicationContext("beans.xml");

// 注册关闭钩子

ctx.registerShutdownHook();

Person person = ctx.getBean("chinese" , Person.class);

person.useAxe();

}

}

五 测试结果

正在执行初始化的init方法...

钢斧砍柴真快

正在执行销毁之前的close方法...

更多关于java相关内容感兴趣的读者可查看本站专题:《Spring框架入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:银行系统建设与开发的区别?为什么说银行系统开发是企业架构与核心建设
下一篇:开放银行案例分析,开放银行数据保护与合规实践
相关文章

 发表评论

暂时没有评论,来抢沙发吧~