org.springframework.beans.factory.config.BeanDefinition接口

BeanDefinition接口

org.springframework.beans.factory.config.BeanDefinition

  • BeanDefinition顾名思义就是Bean定义
  • Bean实例化之前的各种信息都存储在BeanDefinition的实现类AbstractBeanDefinition
  • 这些信息会指导Bean的初始化行为、指明Bean的一些特性

实现类:AbstractBeanDefinition

AbstractBeanDefinition存储的信息:

  1. BeanClass信息
  2. 是否是singleton
  3. 是否lazy-init
  4. 是否是abstract
  5. 有哪些property
  6. 依赖于哪些Bean
  7. initMethod/destroyMethod名称
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
public abstract class AbstractBeanDefinition 
extends BeanMetadataAttributeAccessor
implements BeanDefinition, Cloneable {
//...

//默认作用域
public static final String SCOPE_DEFAULT = "";
public static final int AUTOWIRE_NO = 0;
public static final int DEPENDENCY_CHECK_NONE = 0;

//Bean的Class信息
@Nullable
private volatile Object beanClass;

//Bean作用域
@Nullable
private String scope = SCOPE_DEFAULT;

//Bean是否是abstract的
private boolean abstractFlag = false;

//Bean是否是lazy-init的
private boolean lazyInit = false;

private int autowired = AUTOWIRE_NO;
private int dependencyCheck = DEPENDENCY_CHECK_NONE;

//Bean依赖哪些其他Bean
@Nullable
private String[] dependsOn;

private boolean autowireCandidate = true;

private boolean primary = false;

private final Map<String, AutowireCandidateQualifier> qualifiers = new LinkedHashMap<>();

@Nullable
private Supplier<?> instanceSupplier;

private boolean nonPublicAccessAllowed = true;

private boolean lenientConstructorResolution = true;

@Nullable
private String factoryBeanName;

@Nullable
private String factoryMethodName;

@Nullable
private ConstructorArgumentValues constructorArgumentValues;

//Bean的property属性值
@Nullable
private MutablePropertyValues propertyValues;

@Nullable
private MethodOverrides methodOverrides;

//initMethod名称
@Nullable
private String initMethodName;

//destroyMethod名称
@Nullable
private String destroyMethodName;

private boolean enforceInitMethod = true;

private boolean enforceDestroyMethod = true;

private boolean synthetic = false;

private int role = BeanDefinition.ROLE_APPLICATION;

//描述
@Nullable
private String description;

@Nullable
private Resource resource;


}
-------------本文结束感谢您的阅读-------------

本文标题:org.springframework.beans.factory.config.BeanDefinition接口

文章作者:DragonBaby308

发布时间:2019年09月30日 - 19:54

最后更新:2019年09月30日 - 19:55

原始链接:http://www.dragonbaby308.com/org-springframework-beans-factory-config-BeanDefinition/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

急事可以使用右下角的DaoVoice,我绑定了微信会立即回复,否则还是推荐Valine留言喔( ఠൠఠ )ノ
0%