转:

Spring Bean初始化之后执行指定方法

2017年07月31日 15:59:33 vircens 阅读数:24807
 

Spring Bean初始化之后执行指定方法

在运用Spring进行实际项目开发过程中,经常会有一种需求就是想要在Bean实例化完成后,自动执行指定方法,包括加载初始值,初始化缓存等。通过简单的XML配置或者使用注解即可实现。
本文仅用于记录简单的使用介绍,不阐述详细的技术实现细节,达到抛砖引玉的效果。
  • 1
  • 2

XML配置

如果项目中bean是通过xml配置方式来管理与加载的,可以在XML配置bean时,指定init-method属性即可。示例如下:

<bean id="initMethodTest" class="service.InitMethodTest" init-method="initMethod"/>
  • 1

bean标签中的init-method指定当Spring容器初始化initMethodTest完成后,自动执行InitMethodTest类中的initMethod方法。InitMethodTest如下:

public class InitMethodTest {

    public void initMethod(){
System.out.println(">>>>>>>>>initMethod<<<<<<<<<<<");
} }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

创建JUnit单元测试,不进行执行任何方法,仅查看Spring初始化执行效果

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath*:config/applicationContext.xml"})
public class InitMethodJUnitTest { @Autowired
private InitMethodTest initMethodTest; @Test
public void initMethodTest(){ }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

运行结果如下:

>>>>>>>>>initMethod<<<<<<<<<<<
  • 1

Spring注解方式

如果项目中bean是通过注解方式管理的,需要在初始化完成后,执行指定方法,仅仅需要在需要执行的方法上添加@PostConstruct注解即可,修改后的JAVA类如下:

@Component
public class InitMethodTest { @PostConstruct
public void initMethod(){
System.out.println(">>>>>>>>>initMethod<<<<<<<<<<<");
} }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

另外还可以通过实现InitializingBean/DisposableBean 接口来定制初始化之后/销毁之前的操作方法。

更多请参考:http://blog.csdn.net/heyutao007/article/details/50326793

Spring Bean初始化之后执行指定方法的更多相关文章

  1. ApplicationListener接口,在spring容器初始化后执行的方法

    一.如果我们希望在Spring容器将所有的Bean都初始化完成之后,做一些操作,那么就可以使用ApplicationListener接口,实现ApplicationListener接口中的onAppl ...

  2. spring注解之@PostConstruct在项目启动时执行指定方法

    一.注解解释 Spring的@PostConstruct注解在方法上,表示此方法是在Spring实例化该Bean之后马上执行此方法,之后才会去实例化其他Bean,并且一个Bean中@PostConst ...

  3. jQuery按回车键执行指定方法

    1.按Enter键执行指定方法: //按回车进入页面 $(function(){ $(document).keydown(function(event){ if (event.keyCode == 1 ...

  4. Spring中初始化bean和销毁bean的时候执行某个方法的详解

    关于在spring  容器初始化 bean 和销毁前所做的操作定义方式有三种: 第一种:通过注解@PostConstruct  和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作 ...

  5. spring 初始化之后执行的方法

    Spring初始化完成后直接执行一个方法,初始化数据(解决方法并执行两次) 在做WEB项目时,经常在项目第一次启动时利用WEB容器的监听.Servlet加载初始化等切入点为数据库准备数据,这些初始化数 ...

  6. spring bean初始化及销毁你必须要掌握的回调方法

    spring bean在初始化和销毁的时候我们可以触发一些自定义的回调操作. 初始化的时候实现的方法 1.通过java提供的@PostConstruct注解: 2.通过实现spring提供的Initi ...

  7. spring bean初始化顺序

    转载:http://blog.csdn.net/heyutao007/article/details/50326793 常用的设定方式有以下三种:通过实现 InitializingBean/Dispo ...

  8. 一次Spring Bean初始化顺序问题排查记录

    最近在使用Springboot的时候需要通过静态的方法获取到Spring容器托管的bean对象,参照一些博文里写的,新建了个类,并实现ApplicationContextAware接口.代码大致如下: ...

  9. 🙈羞,Spring Bean 初始化/销毁竟然有这么多姿势

    文章来源:http://1t.click/bfHN 一.前言 日常开发过程有时需要在应用启动之后加载某些资源,或者在应用关闭之前释放资源.Spring 框架提供相关功能,围绕 Spring Bean ...

随机推荐

  1. Doctype的作用?严格模式与混合模式,如何触发者这两种模式,区分它们有何意义?

    Doctype作用?严格模式与混合模式,如何触发者这两种模式,区分它们有何意义? 1.1 Doctype作用 <!DOCTYPE>声明叫做文件类型定义(DTD),声明的作用为了告诉浏览器该 ...

  2. Admin Console 反应慢的相关bug

    一个常见问题是在 Admin console 刷新 server 列表时,页面反应慢.从 Admin Server 的 Thread Dump 可以看到 Admin server 到 Managed ...

  3. solr8.0 springboot整合solr(四)

    引言: solr搭建起后,就该应用到java后台开发里了,接下来就用springboot整合应用solr 一:引入jar包 <!--solr--> <dependency> & ...

  4. Python 基于Python及zookeeper实现简单分布式任务调度系统设计思路及核心代码实现

    基于Python及zookeeper实现简单分布式任务调度系统设计思路及核心代码实现   by:授客 QQ:1033553122 测试环境 功能需求 实现思路 代码实践(关键技术点实现) 代码模块组织 ...

  5. SpringBoot+MyBatis配置多数据源

    SpringBoot 可以支持多数据源,这是一个非常值得学习的功能,但是从现在主流的微服务的架构模式中,每个应用都具有唯一且准确的功能,多数据源的需求很难用到,考虑到实际情况远远比理论复杂的多,这里还 ...

  6. matlab中的实时音频

    音频系统工具箱™针对实时音频处理进行了优化.audioDeviceReader, audioDeviceWriter, audioPlayerRecorder, dsp.AudioFileReader ...

  7. kali权限提升之本地提权

    kali权限提升之本地提权 系统账号之间权限隔离 操作系统的安全基础 用户空间 内核空间 系统账号: 用户账号登陆时候获取权限令牌 服务账号无需用户登录已在后台启动服务 windows用户全权限划分: ...

  8. maven生成项目慢解决办法

    maven生成项目慢,原因:在线更新archetype-catalog.xml文件,从Apache中央仓库. 解决办法,手动下载,放到maven环境. 备用下载地址: https://files.cn ...

  9. 记录Javascript集合操作

    function Set() { var items = {}; /** * 添加元素 * @param {[type]} value [description] */ this.add = func ...

  10. fullcalendar日历插件的使用并动态增删改查

    我上个项目是做了一个关于教育方面的web端页面,其中的课程表就要用到fullcalendar日历插件,刚开始也是不会用,因为以前也没用过,后面也是看官方文档,问同事,最后完成了这个课程表,个人感觉fu ...