三万字盘点Spring/Boot的那些常用扩展点
大家好,我是三友。
Spring对于每个Java后端程序员来说肯定不陌生,日常开发和面试必备的。本文就来盘点Spring/SpringBoot常见的扩展点,同时也来看看常见的开源框架是如何基于这些扩展点跟Spring/SpringBoot整合的。
话不多说,直接进入正题。
FactoryBean
提起FactoryBean,就有一道“著名”的面试题“说一说FactoryBean和BeanFactory的区别”。其实这两者除了名字有点像,没有半毛钱关系。。
BeanFactory是Bean的工厂,可以帮我们生成想要的Bean,而FactoryBean就是一种Bean的类型。当往容器中注入class类型为FactoryBean的类型的时候,最终生成的Bean是用过FactoryBean的getObject获取的。
来个FactoryBean的Demo
定义一个UserFactoryBean,实现FactoryBean接口,getObject方法返回一个User对象
public class UserFactoryBean implements FactoryBean<User> { @Override public User getObject() throws Exception { User user = new User(); System.out.println("调用 UserFactoryBean 的 getObject 方法生成 Bean:" + user); return user; } @Override public Class<?> getObjectType() { // 这个 FactoryBean 返回的Bean的类型 return User.class; } }