1、实现接口BeanPostProcessor的postProcessAfterInitialization和postProcessBeforeInitialization方法。
监听一个bean在初始化前或初始化后的处理。
如下图应用:
2、实现接口ApplicationListener。spring提供了监听器监听不同的事件,根据不同的事件在spring加载不同的阶段进行调用这些事件。
如下图,在spring进行环境准备,还未加载上下文时的一个事件:
ContextClosedEvent:如监听spring容器关闭之前要做的处理。
ApplicationStartedEvent :spring boot启动开始时执行的事件
ApplicationEnvironmentPreparedEvent:spring boot 对应Enviroment已经准备完毕,但此时上下文context还没有创建。
ApplicationPreparedEvent:spring boot上下文context创建完成,但此时spring中的bean是没有完全加载完成的。
ApplicationFailedEvent:spring boot启动异常时执行事件
3、实现InitializingBean接口,在实现类被ioc容器初始化完成时,会自动调用覆盖这个接口的afterPropertiesSet方法。
如下是策略模式中把各个策略加载到工厂中。
4、实现ApplicationContextAware接口。通过实现这个接口,spring会自动注入applicationContext上线文对象进来,我们可以根据这个上下文对象获取spring中的一些bean。
其中的applicationContext.getBeansOfType是获取一个接口下的所有实现类的实例。
5、实现HandlerInterceptor接口。属于spring mvn对web的一些拦截处理:如校验登录,校验请求地址,校验token,校验和设置cookie等。大部分都是实现preHandle方法。
6、实现MethodInterceptor接口。在Spring Aop框架中,MethodInterceptor接口被用来拦截指定的方法,对方法进行增强。
如下图使用:
7、@Acpect : 对一些指定的路径或格式进行切入,然后对返回的值进行重新设置或者加入一些公共的返回值。
8、@RestControlleAdvice的使用。是@RestControlle的增强版本,一般用于拦截处理返回给web的异常等。