网站建设资讯

NEWS

网站建设资讯

Spring常用接口有哪些

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

创新互联公司是一家专注于成都网站制作、成都网站设计与策划设计,宜章网站建设哪家好?创新互联公司做网站,专注于网站建设十多年,网设计领域的专业建站公司;建站业务涵盖:宜章等地区。宜章做网站价格咨询:18982081108

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());  

        }  

    }  

 

  

 要发布自定义事件,需要调用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常用接口有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!


本文名称:Spring常用接口有哪些
网站URL:http://cdweb.net/article/igdedj.html