栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

「Spring」开发项目中常用的接口

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

「Spring」开发项目中常用的接口

目录

InitializingBean

ApplicationContext

BeanPostProcessor

ApplicationListener

ApplicationContextAware


InitializingBean

        当我们阅读一些优秀的开源代码时,会经常见到InitializingBean的身影,Spring启动后,初始化Bean时,若该Bean实现InitialzingBean接口,会自动调用afterPropertiesSet()方法,完成一些用户自定义的初始化操作。

ApplicationContext

        是spring继BeanFactory之外的另一个核心接口或容器,允许容器通过应用程序上下文环境创建、获取、管理bean。为应用程序提供配置的中央接口。比BeanFactory功能更加强大。

BeanPostProcessor

        含义正如其字面意思,bean的后置处理器,当所有的bean初始化完之后,调用的接口。一个前置,一个后置,AOP就是基于此实现的。

public interface BeanPostProcessor {
 
	@Nullable
	default Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
		return bean;
	}

	@Nullable
	default Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
		return bean;
	}
}

ApplicationListener

        Spring为我们提供一套较完善的监听机制。

        可以自定义事件, 需要继承 ApplicationEvent类。(监听者模式)

        ApplicationListener通过范型区分(订阅)不同事件        

        示例代码

        首先自定义事件

public class MyEvent extends ApplicationEvent {

    private Object body;

    public MyEvent(Object source, Object body) {
        super(source);
        this.body = body;
    }

    public Object getBody() {
        return body;
    }

    public void setBody(Object body) {
        this.body = body;
    }
}

        监听器

@Component
public class MyListener implements ApplicationListener {

    @Override
    public void onApplicationEvent(MyEvent event) {
        System.out.println(event.getBody());
    }
}

         使用

        applicationContext中的 publishEvent() 方法推送事件。

        注意: spring4.2之后提供注解版@EventListener支持

ApplicationContextAware

         当一个类实现了这个接口之后,这个类就可以方便的获得ApplicationContext对象,Spring发现某个Bean实现了ApplicationContextAware接口,Spring容器会在创建该Bean之后,自动调用该Bean的setApplicationContext(参数)方法,调用该方法时,会将容器本身ApplicationContext对象作为参数传递给该方法。

        示例代码

@Component
public class SpringContextHelper implements ApplicationContextAware {

    private static ApplicationContext applicationContext;

    @Override
    public void setApplicationContext(@NonNull ApplicationContext context) {
        applicationContext = context;
    }

    public static  T getInstance(String beanName, Class beanType) {
        return applicationContext.getBean(beanName, beanType);
    }

    public static  T getInstance(Class bean) {
        return applicationContext.getBean(bean);
    }

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/821847.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号