温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Spring常用接口有哪些

发布时间:2021-09-14 16:46:20 来源:亿速云 阅读:212 作者:chen 栏目:大数据

这篇文章主要讲解了“Spring常用接口有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Spring常用接口有哪些”吧!

1、InitializingBean接口 
InitializingBean接口中只有一个afterPropertiesSet方法,从方法的名称上很容易理解,这个方法是在Bean的属性都设置值后被调用,用于完成一些初始化工作。当然,在Spring的配置文件中init-method的配置也是在Bean的属性都设置值后被调用,用于完成一些初始化工作,不过在执行顺序上,接口的方法先于配置。值得注意的是,这两种方式都是用于完成一些初始化工作,所以相应的方法中不要编写一些复杂且执行时间很长的逻辑。

         当需要在bean的全部属性设置成功后做些特殊的处理,可以让该bean实现InitializingBean接口。效果等同于bean的init-method属性的使用或者@PostContsuct注解的使用。

      三种方式的执行顺序:先注解,然后执行InitializingBean接口中定义的方法,最后执行init-method属性指定的方法。

2、DisposableBean接口 
DisposableBean接口中只有一个destroy方法,该方法会在Bean被销毁、生命周期结束之前被调用,用于做一些销毁的收尾工作。同样,在Spring的配置文件中destroy-method配置也完成同样的工作,不过在执行顺序上,接口的方法先于配置。

当需要在bean销毁之前做些特殊的处理,可以让该bean实现DisposableBean接口。效果等同于bean的destroy-method属性的使用或者@PreDestory注解的使用。

      三种方式的执行顺序:先注解,然后执行DisposableBean接口中定义的方法,最后执行destroy-method属性指定的方法。

3、ApplicationContextAware接口 
ApplicationContextAware中只有一个setApplicationContext方法。实现了ApplicationContextAware接口的类,可以在该Bean被加载的过程中获取Spring的应用上下文ApplicationContext,通过ApplicationContext可以获取Spring容器内的很多信息。

当一个类需要获取ApplicationContext实例时,可以让该类实现ApplicationContextAware接口。代码展示如下:

public class Animal implements ApplicationContextAware, BeanNameAware{  

    private String beanName;  

    private ApplicationContext applicationContext;  

    public void setBeanName(String name) {  

        this.beanName = name;  

    }  

    /** 

     * @param applicationContext 该参数将由Spring容器自动赋值 

     */  

    public void setApplicationContext(ApplicationContext applicationContext)throws BeansException {  

        this.applicationContext = applicationContext;  

    }  

    public void run(){  

        System.out.println(beanName);  

        //发布自定义事件  

        AnimalEvent event = new AnimalEvent(this, "老虎");  

        applicationContext.publishEvent(event);  

    }  

}  

通过@Autowired注解可以自动装配一些常用对象实例:

    @Autowired  

    private MessageSource messageSource;   

    @Autowired  

    private ResourceLoader resourceLoader;   

    @Autowired  

    private ApplicationContext applicationContext; 

4、BeanFactoryAware接口 
BeanFactoryAware接口中只有一个setBeanFactory方法。实现了BeanFactoryAware接口的类,可以在该Bean被加载的过程中获取加载该Bean的BeanFactory,同时也可以获取这个BeanFactory中加载的其它Bean。

5、FactoryBean接口 
FactoryBean接口可以实现Bean实例化的个性定制,让Spring容器加载我们想要的Bean。实现了FactoryBean接口的类,可以通过实现getObject方法,实现加载我们想要的Bean。

6、BeanPostProcessor接口 
BeanPostProcessor接口中有两个方法,分别为postProcessBeforeInitialization和postProcessAfterInitialization。实现了BeanPostProcessor接口的类,会在每个Bean初始化(即调用setter)之前和之后,分别调用这个类中的postProcessBeforeInitialization方法和postProcessAfterInitialization方法,实现初始化的逻辑控制。

7、InstantiationAwareBeanPostProcessor接口 
InstantiationAwareBeanPostProcessor接口中,常用的方法是postProcessBeforeInstantiation和postProcessAfterInstantiation。每个Bean的实例化(即调用构造函数)之前和之后,会分别调用实现了该接口的类中的postProcessBeforeInstantiation和postProcessAfterInstantiation方法。

8、BeanFactoryPostProcessor接口 
BeanFactoryPostProcessor接口中只有postProcessBeanFactory方法。实现了该接口的类,可以在Bean被创建之前,获取容器中Bean的定义信息,并且可以进行修改。实现类中的postProcessBeanFactory方法只会被执行一次,且先于BeanPostProcessor接口的方法。

9、当需要监听自定义事件时,可以新建一个实现ApplicationListener接口的类,并将该类配置到Spring容器中。代码展示如下:

/** 

 * 自定义事件监听器 

 */  

public class CustomEventListener implements ApplicationListener {  

    public void onApplicationEvent(ApplicationEvent event) {  

        if(event instanceof AnimalEvent){  

            AnimalEvent animalEvent = (AnimalEvent)event;  

            System.out.println("触发自定义事件:Animal name is " + animalEvent.getName());  

        }  

    }  

<!-- 自定义事件监听器:Spring容器自动注册它 -->  

<bean id="customEventListener" class="com.cjm.spring.CustomEventListener"/>   

 要发布自定义事件,需要调用ApplicationContext的publishEvent方法

10、ApplicationEvent抽象类

       当需要创建自定义事件时,可以新建一个继承自ApplicationEvent抽象类的类。代码展示如下:

/** 

 * 自定义事件 

 */  

public class AnimalEvent extends ApplicationEvent {  

    private String name;  

    public String getName() {  

        return name;  

    }  

    /** 

     * @param source 事件源对象 

     */  

    public AnimalEvent(Object source){  

        super(source);  

    }  

    public AnimalEvent(Object source, String name){  

        super(source);  

        this.name = name;  

    }  

}

感谢各位的阅读,以上就是“Spring常用接口有哪些”的内容了,经过本文的学习后,相信大家对Spring常用接口有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI