springboot @Autowired 注解处理要点
所属分类 springboot
浏览量 1184
SpringApplication#refreshContext()
BeanUtils#instantiateClass()
AbstractAutowireCapableBeanFactory doCreateBean() populateBean()
AutowiredAnnotationBeanPostProcessor#postProcessPropertyValues
public class AutowiredAnnotationBeanPostProcessor extends InstantiationAwareBeanPostProcessorAdapter
implements MergedBeanDefinitionPostProcessor, PriorityOrdered, BeanFactoryAware
public interface MergedBeanDefinitionPostProcessor extends BeanPostProcessor
findAutowiringMetadata()
private final Set> autowiredAnnotationTypes = new LinkedHashSet<>();
public AutowiredAnnotationBeanPostProcessor() {
this.autowiredAnnotationTypes.add(Autowired.class);
this.autowiredAnnotationTypes.add(Value.class);
try {
this.autowiredAnnotationTypes.add((Class extends Annotation>)
ClassUtils.forName("javax.inject.Inject", AutowiredAnnotationBeanPostProcessor.class.getClassLoader()));
logger.info("JSR-330 'javax.inject.Inject' annotation found and supported for autowiring");
}
catch (ClassNotFoundException ex) {
// JSR-330 API not available - simply skip.
}
}
inject方法
resolveDependency 获取值
反射设置
private class AutowiredFieldElement extends InjectionMetadata.InjectedElement
protected void inject(Object bean, @Nullable String beanName, @Nullable PropertyValues pvs) throws Throwable
ReflectionUtils.makeAccessible(field);
field.set(bean, value);
resource注解 CommonAnnotationBeanPostProcessor 处理
InjectionMetadata [line: 82] [conditional] - inject(Object, String, PropertyValues)
设置条件断点 beanName.equals("lifeBean")
spring bean 生命周期实例
BeanPostProcessor 和 BeanFactoryPostProcessor
spring bean生命周期及扩展点
eclipse设置条件断点和异常断点
Autowired和Resource注解的区别
上一篇
下一篇
SpringBoot的指标数据
cron表达式实例
团队管理的1+4+7法则
spring autowired注解不生效的一种情况
cron表达式中 * 与 ? 的区别
SpringBoot定时任务 schedule