Spring一些笔记

@ControllerAdvice ,被注解的class表示这是一个增强的 Controller。

使用这个 Controller ,可以实现三个方面的功能:

  1. 全局异常处理
  2. 全局数据绑定
  3. 全局数据预处理

解决不同package下bean重名的问题

//启动类注解
@SpringBootApplication
@ComponentScan(nameGenerator=SelfBeanNameGenerator.class)


//自定义beanNameGenerator
public class SelfBeanNameGenerator extends AnnotationBeanNameGenerator {
    @Override
    protected String buildDefaultBeanName(BeanDefinition definition) {
        if (definition instanceof AnnotatedBeanDefinition) {
            String beanName = determineBeanNameFromAnnotation((AnnotatedBeanDefinition) definition);
            if (StringUtils.hasText(beanName)) {
                return beanName;
            }
        }
        return definition.getBeanClassName();
    }
}

----

BeanPostProcessor 作用,

可以在bean初始化时做一些配置

该类接口如下;

public interface BeanPostProcessor {
    //bean初始化方法调用前被调用,修改beanDefinition,预处理
//实例化、依赖注入完毕,在调用显示的初始化之前完成一些定制的初始化任务
Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException; //实例化、依赖注入、初始化完毕时执行 Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException; }

bean初始化过程:

原文地址:https://www.cnblogs.com/snow-man/p/12363315.html