Skip to content

Commit 246442b

Browse files
authored
Merge pull request #61 from 1713612859/main
将BeanDefinition 的Map 修改成为并发Map ,并设置初始化大小
2 parents 00b8237 + 5cafaa0 commit 246442b

File tree

3 files changed

+34
-11
lines changed

3 files changed

+34
-11
lines changed

src/main/java/org/springframework/beans/factory/config/BeanDefinition.java

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,20 +16,36 @@ public class BeanDefinition {
1616

1717
public static String SCOPE_PROTOTYPE = "prototype";
1818

19-
private Class beanClass;
2019

21-
private PropertyValues propertyValues;
20+
/**
21+
* bean class类
22+
*/
23+
private Class beanClass;
2224

25+
/**
26+
* class 属性值
27+
*/
28+
private PropertyValues propertyValues;
29+
/**
30+
* 通过反射 初始化方法名称
31+
*/
2332
private String initMethodName;
24-
33+
/**
34+
* 销毁方法名称
35+
*/
2536
private String destroyMethodName;
26-
37+
/**
38+
* 作用域 默认单例Bean
39+
*/
2740
private String scope = SCOPE_SINGLETON;
2841

2942
private boolean singleton = true;
3043

3144
private boolean prototype = false;
3245

46+
/*/*
47+
懒加载
48+
*/
3349
private boolean lazyInit=false;
3450

3551
public BeanDefinition(Class beanClass) {

src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import org.springframework.beans.factory.config.BeanDefinition;
66

77
import java.util.*;
8+
import java.util.concurrent.ConcurrentHashMap;
89

910
/**
1011
* @author derekyi
@@ -13,7 +14,7 @@
1314
public class DefaultListableBeanFactory extends AbstractAutowireCapableBeanFactory
1415
implements ConfigurableListableBeanFactory, BeanDefinitionRegistry {
1516

16-
private Map<String, BeanDefinition> beanDefinitionMap = new HashMap<>();
17+
private Map<String, BeanDefinition> beanDefinitionMap = new ConcurrentHashMap<>(256);
1718

1819
@Override
1920
public void registerBeanDefinition(String beanName, BeanDefinition beanDefinition) {

src/main/java/org/springframework/beans/factory/support/DefaultSingletonBeanRegistry.java

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,19 @@
1515
*/
1616
public class DefaultSingletonBeanRegistry implements SingletonBeanRegistry {
1717

18-
//一级缓存
18+
/**
19+
* 一级缓存
20+
*/
1921
private Map<String, Object> singletonObjects = new HashMap<>();
2022

21-
//二级缓存
23+
/**
24+
* 二级缓存
25+
*/
2226
private Map<String, Object> earlySingletonObjects = new HashMap<>();
2327

24-
//三级缓存
28+
/**
29+
* 三级缓存
30+
*/
2531
private Map<String, ObjectFactory<?>> singletonFactories = new HashMap<String, ObjectFactory<?>>();
2632

2733
private final Map<String, DisposableBean> disposableBeans = new HashMap<>();
@@ -46,9 +52,9 @@ public Object getSingleton(String beanName) {
4652

4753
@Override
4854
public void addSingleton(String beanName, Object singletonObject) {
49-
singletonObjects.put(beanName, singletonObject);
50-
earlySingletonObjects.remove(beanName);
51-
singletonFactories.remove(beanName);
55+
singletonObjects.put(beanName, singletonObject); // 1
56+
earlySingletonObjects.remove(beanName); // 2
57+
singletonFactories.remove(beanName); // 3
5258
}
5359

5460
protected void addSingletonFactory(String beanName, ObjectFactory<?> singletonFactory) {

0 commit comments

Comments
 (0)