spring InitializingBean接口

一、接口

public interface InitializingBean {

    /**
     * Invoked by a BeanFactory after it has set all bean properties supplied
     * (and satisfied BeanFactoryAware and ApplicationContextAware).
     * <p>This method allows the bean instance to perform initialization only
     * possible when all bean properties have been set and to throw an
     * exception in the event of misconfiguration.
     * @throws Exception in the event of misconfiguration (such
     * as failure to set an essential property) or if initialization fails.
     */
    void afterPropertiesSet() throws Exception;

}

二、作用

利用spring的InitializingBean的afterPropertiesSet来初始化,直接看下面的demo

①、接口定义

public interface InitializingService {

    public void say();
}

②、接口实现类

@Component("initializingService")
public class InitializingServiceImpl implements InitializingService, InitializingBean {

    @Override
    public void afterPropertiesSet() throws Exception {

        System.out.println("call InitializingBean");
    }

    @Override
    public void say() {

        System.out.println("call say");
    }

}

③、获取bean上下文工具类实现

public class SpringContextUtil implements ApplicationContextAware {

    private static ApplicationContext applicationContext; // Spring应用上下文环境

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        SpringContextUtil.applicationContext = applicationContext;
    }

    /**
     * 获取对象
     *
     * @param name
     * @return Object 一个以所给名字注册的bean的实例
     * @throws BeansException
     */
    public static Object getBean(String name) throws BeansException {
        return applicationContext.getBean(name);
    }

}

xml配置 : spring xml 文件注入

<bean id="springContextUtil" class="com.mycompany.yuanmeng.springdemo.aop.SpringContextUtil" />

④、测试

public class InitializingBeanDemo {

    public static void main(String[] args) {
        new ClassPathXmlApplicationContext("spring.xml"); // 加载ApplicationContext(模拟启动web服务)

        InitializingService service = (InitializingService) SpringContextUtil.getBean("initializingService");

        service.say();

    }
}

⑤、结果

call InitializingBean
call say

这说明在spring初始化bean的时候,如果bean实现了InitializingBean接口,会自动调用afterPropertiesSet方法。

时间: 2024-10-16 16:16:23

spring InitializingBean接口的相关文章

spring InitializingBean 接口 与 BeanNameAware 接口

最近工作需要得到sping中的每个事物需要执行的sql,称机会简单研究了一下spring的事务,项目中管理事务比较简单,用TransactionTemplate,就直接以TransactionTemplate为入口开始学习. TransactionTemplate的源码如下: public class TransactionTemplate extends DefaultTransactionDefinition implements TransactionOperations, Initial

spring中InitializingBean接口使用理解

InitializingBean接口为bean提供了初始化方法的方式,它只包括afterPropertiesSet方法,凡是继承该接口的类,在初始化bean的时候会执行该方法. 测试程序如下: import org.springframework.beans.factory.InitializingBean; public class TestInitializingBean implements InitializingBean{ @Override public void afterProp

spring常用接口 InitializingBean的作用

工作中遇到spring接口中的InitializingBean接口.浅浅的解说一下. -------------------------------------------------------------------------------------- 先探讨一下spring初始化bean方式: //这个时候补充一下spring初始化bean的方式 /** 常用的设定方式有以下三种: 通过实现 InitializingBean/DisposableBean 接口来定制初始化之后/销毁之前的

spring 中 InitializingBean 接口使用理解

前言:这两天在看 spring 与 quart 的集成,所以了解到 spring 是如何初始化 org.springframework.scheduling.quartz.SchedulerFactoryBean 开始执行的,这个正好涉及到 InitializingBean 接口. InitializingBean 接口为 bean 提供了初始化方法的方式,它只包括 afterPropertiesSet 方法,凡是继承该接口的类,在初始化 bean 的时候会执行该方法. Initializing

Spring中Bean初始化及销毁方法(InitializingBean接口、DisposableBean接口、@PostConstruct注解、@PreDestroy注解、以及init-method方法和destroy-method方法)

一. 在Spring中Bean的初始化后以及销毁前的回调方式有: init-method:是指创建bean时调用的方法,注意,不是创建bean的方法. destroy-method:是指销毁bean时调用的方法,同样,不是销毁bean的方法. @PostConstruct注解:在bean实例化和注入后,进行初始化 @PreDestroy:在bean销毁前回调 InitializingBean接口: 查看InitializingBean接口的源码可以发现,只有一个方法,需要pojo继承Initia

Spring常用接口和类

一.ApplicationContextAware接口 当一个类需要获取ApplicationContext实例时,可以让该类实现ApplicationContextAware接口.代码展示如下: public class Animal implements ApplicationContextAware, BeanNameAware{ private String beanName; private ApplicationContext applicationContext; public v

Spring InitializingBean和init-method

原文转自:http://blog.csdn.net/shaozheng1006/article/details/6916940 InitializingBean Spirng的InitializingBean为bean提供了定义初始化方法的方式.InitializingBean是一个接口,它仅仅包含一个方法:afterPropertiesSet().   在spring 初始化后,执行完所有属性设置方法(即setXxx)将自动调用 afterPropertiesSet(), 在配置文件中无须特别

Spring InitializingBean和ApplicationListener&lt;ContextRefreshedEvent&gt;

事件机制作为一种编程机制,在许多语言中都提供了支持.JAVA语言也不例外,java中的事件机制的参与者有3种角色: 1.event object 2.event source 3.event listener这三个角色的含义字面上很好解,它们就定义了事件机制的一个基本模型.作为一种常用的编程设计机制,许多开源框架的设计中都使用了事件机制.SpringFramework也不例外,下面着重阐述个人对spring中的事件机制的一些理解.其中一个主要的使用场景是用在IOC的容器的启动过程,当所有的bea

Spring Resource接口获取资源

本文转自http://elim.iteye.com/blog/2016305 感谢作者 Resource 所有的资源都被可以通过 InputStream 这个类来获取,所以也屏蔽了资源的提供者 ResourceLoader 接口负责资源的统一加载 通过Spring Resource接口获取资源 目录 1       Resource简介 2       通过ResourceLoader获取资源 3       在bean中获取Resource的方式 1       Resource简介 在Spr