SpringBoot框架常用的一些扩展接口

ApplicationRunner接口
会在整个容器启动后处理一些业务。如数据缓存预热、各类配置检查等。

HandlerInterceptor接口
SpringMVC拦截器,一般结合HandleMethod与Request来处理controller方法和request,具体来说,一般是controller方法注解+request来处理一些事项。如日志记录。带权限检查。数据加解密等方面。

Aspect切面
切面注解具controller方法入参的一些处理,如参数校验,加解密,记录参数日志,事务,多数据源指定,数据权限等,应用很广。

ApplicationListener监听器
监听Spring容器事件。或者监听自定义事件,可以用来处理启动容器时,做一些业务。也可以用来解耦业务涉及面广的一些业务。如,主业务完成后,现在或将来存在若干个扩展事项。可以派发事件。用监听器去处理。如下所示:

   public JsonResult addOpinion(OpinionFormPo po) throws Exception {
        Opinion opinion = po.toInsertOpinion();
        int line = dao.insertSelective(opinion);
        // 主业务完成后,发布事件给扩展组件。
        publisher.publishEvent(new OpinionUpdateEvent(SqlCommandType.INSERT, po));
        return OK("新增" + line + "行数据", opinion.getId());
    }

Ordered接口或@Order
多个监听器,多个组件或多个拦截器执行排序。

Aware接口及几个常用的子类:
BeanNameAware 获取当前bean的标识
ApplicationContextAware 获取当前容器
BeanClassLoaderAware 获取容器类加载器
EmbeddedValueResolverAware 获取占位符解析器
EnvironmentAware 获取环境变量
ResourceLoaderAware resource加载器

BeanPostProcessor bean的后置处理器
可以用来对某一类bean进行增强,收集某一类bean等。

InitializingBean bean初始化方法

HandlerMethodArgumentResolver接口 SpringMVC参数解析器

Scope接口,自定义作用域

BeanFactoryPostProcessor和BeanDefinitionRegistryPostProcessor
用来做bean的一些注册。

FactoryBean,一种特殊的bean。一般用来做批量的代理对象的实现类注入容器。框架整合方面用得多。如MybatisSqlSessionFactoryBean

ImportSelector批导入一些组件,配合@Import使用

只列了部份本人用到过的。还有些冷门接口很少用到。不一一列举。熟练使用一些常用的扩展接口,配合SpringBoot用到的注解使用。效果、设计模式认知、知识面、B格方面都有不少的提升。也就是常说的他不会的我会。阅读Spring源码应该是每个java开发者的必修课。这是最廉价的和大神零距离交流的机会。 读懂了Spring,其他源代码读起来就很轻松。

你可能感兴趣的:(spring,boot,spring,java)