spring InitializingBean接口

本文介绍Spring框架中InitializingBean接口及其afterPropertiesSet方法的作用,并通过一个简单的示例展示如何使用该接口进行bean的初始化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、接口
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方法。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值