好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

BeanDefinition基础信息讲解

?

1

2

3

4

5

6

public class beandefinitionholder implements beanmetadataelement {

   private final beandefinition beandefinition;

   private final string beanname; //beanid

   @nullable

   private final string[] aliases; //bean的别名数组

}

?

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

public interface beandefinition extends attributeaccessor, beanmetadataelement {

   // 我们可以看到,默认只提供 sington 和 prototype 两种,

   // 很多读者可能知道还有 request, session, globalsession, application, websocket 这几种,

   // 不过,它们属于基于 web 的扩展。

   string scope_singleton = configurablebeanfactory.scope_singleton;

   string scope_prototype = configurablebeanfactory.scope_prototype;

   // 比较不重要,直接跳过吧

   int role_application = 0 ;

   int role_support = 1 ;

   int role_infrastructure = 2 ;

   // 设置父 bean,这里涉及到 bean 继承,不是 java 继承。请参见附录的详细介绍

   // 一句话就是:继承父 bean 的配置信息而已

   void setparentname(string parentname);

   // 获取父 bean

   string getparentname();

   // 设置 bean 的类名称,将来是要通过反射来生成实例的

   void setbeanclassname(string beanclassname);

   // 获取 bean 的类名称

   string getbeanclassname();

   // 设置 bean 的 scope

   void setscope(string scope);

   string getscope();

   // 设置是否懒加载

   void setlazyinit( boolean lazyinit);

   boolean islazyinit();

   // 设置该 bean 依赖的所有的 bean,注意,这里的依赖不是指属性依赖(如 @autowire 标记的),

   // 是 depends-on="" 属性设置的值。

   void setdependson(string... dependson);

   // 返回该 bean 的所有依赖

   string[] getdependson();

   // 设置该 bean 是否可以注入到其他 bean 中,只对根据类型注入有效,

   // 如果根据名称注入,即使这边设置了 false,也是可以的

   void setautowirecandidate( boolean autowirecandidate);

   // 该 bean 是否可以注入到其他 bean 中

   boolean isautowirecandidate();

   // 主要的。同一接口的多个实现,如果不指定名字的话,spring 会优先选择设置 primary 为 true 的 bean

   void setprimary( boolean primary);

   // 是否是 primary 的

   boolean isprimary();

   // 如果该 bean 采用工厂方法生成,指定工厂名称。对工厂不熟悉的读者,请参加附录

   // 一句话就是:有些实例不是用反射生成的,而是用工厂模式生成的

   void setfactorybeanname(string factorybeanname);

   // 获取工厂名称

   string getfactorybeanname();

   // 指定工厂类中的 工厂方法名称

   void setfactorymethodname(string factorymethodname);

   // 获取工厂类中的 工厂方法名称

   string getfactorymethodname();

   // 构造器参数

   constructorargumentvalues getconstructorargumentvalues();

   // bean 中的属性值,后面给 bean 注入属性值的时候会说到

   mutablepropertyvalues getpropertyvalues();

   // 是否 singleton

   boolean issingleton();

   // 是否 prototype

   boolean isprototype();

   // 如果这个 bean 是被设置为 abstract,那么不能实例化,

   // 常用于作为 父bean 用于继承,其实也很少用......

   boolean isabstract();

   int getrole();

   string getdescription();

   string getresourcedescription();

?

1

2

3

4

5

6

7

8

9

10

11

12

public interface attributeaccessor {

  //设置类属性

   void setattribute(string var1, @nullable object var2);

   @nullable

   object getattribute(string var1);

   @nullable

   object removeattribute(string var1);

  //是否拥有类属性

   boolean hasattribute(string var1);

  //获取所有类属性名

   string[] attributenames();

}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接

原文链接:https://blog.csdn.net/c_royi/article/details/86523477

查看更多关于BeanDefinition基础信息讲解的详细内容...

  阅读:13次