您好,登錄后才能下訂單哦!
這篇文章主要講解了“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常用接口有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。