BeanDefinition基础信息讲解

public class BeanDefinitionHolder implements BeanMetadataElement {
  private final BeanDefinition beanDefinition;
  private final String beanName;//beanID
  @Nullable
  private final String[] aliases;//Bean的别名数组
}
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();
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();
}

总结

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

(0)

相关推荐

  • Javascript迭代、递推、穷举、递归常用算法实例讲解

    累加和累积 累加:将一系列的数据加到一个变量里面.最后的得到累加的结果 比如:将1到100的数求累加和 小球从高处落下,每次返回到原来一半,求第十次小球落地时小球走过的路程 <script> var h=100; var s=0; for(var i=0;i<10;i++){ h=h/2; s+=h; } s=s*2+100; </script> 累积:将一系列的数据乘积到一个变量里面,得到累积的结果. 常见的就是n的阶乘 var n=100; var result= 1;

  • Java变态跳台阶实现思路和代码

    变态跳台阶 1. 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 2. 题目分析 f(1) = 1 f(2) 会有两个跳得方式,一次1阶或者2阶,这回归到了问题f(1),f(2) = f(2-1) + f(2-2) f(3) 会有三种跳得方式,1阶.2阶.3阶,那么就是第一次跳出1阶后面剩下:f(3-1);第一次跳出2阶,剩下f(3-2):第一次3阶,那么剩下f(3-3).因此结论是: f(3) = f(3-1)+f(3-

  • Java中流的有关知识点详解

    什么是流? 流:程序和设备之间连接起来的一根用于数据传输的管道,流就是一根管道. 流的分类: 四大基本抽象流(输入流,输出流,字符流,字节流) 文件流 缓冲流 转换流 数据流     流一定是类,但类不一定是流 print流 object流 按数据流的方向不同可以分为输入流和输出流. 按处理数据单位不同可以分为字节流和字符流.(一个字符是两个字节) 按功能不同可以分为节点(原始)流和处理(包裹)流. 字节流         字符流 输入流      InputStream      Reader

  • JavaScript之解构赋值的理解

    1. ES6的新特性 允许将对象或者数组'分解'成多个单独的值, 以对象的解构开始. 代码示例 2. 说明 1).  定义一个对象 const obj={b:2,c:3,d:4}; 此时系统中没有变量b, 变量c与变量d 2). 开始解构该对象, const {a,b,c} = obj 这句话的意思是, 定义a,b,c三个变量, 然后在obj对象中寻找a,b,c变量, 如果找到, 则赋值给对应的变量 所以, a, 已定义, 但是未赋值. 定义是在const{a,b,c}中定义的, 而没有在obj

  • JavaScript两种计时器的实例讲解

    通过使用 JavaScript,我们有能力做到在一个设定的时间间隔之后来执行代码,而不是在函数被调用后立即执行.我们称之为计时事件.提供了两种计时器的方法如下: window.setInterval(): 这个方法就是在一个周期内反复执行一直到窗口关闭或者 clearInterval() window.setTimeout(); 延迟执行内容 setInterval()的使用方法: setInterval(code,millisec); code:可以是方法名,如果是方法不要加小括号.同时也可以

  • Java内部类及其特点的讲解

    定义在类里面的类就叫做内部类. 内部类的特点: 在内部类中可以直接访问外部类的成员,包括私有的成员 在外部类中不能直接访问内部类的成员,必须通过创建内部类的对象来调用内部类成员 如何创建内部类对象: 内部类名 对象名= new 内部类名(); 对象名.成员名    但是私有化的东西还是不能访问的 可以修饰内部类的修饰符有哪些: private   static 如果通过private 修饰 ,只能在外部类中提供公共的方法对内部类进行访问 如果是static 修饰,如何创建外部类对象 外部类名.内

  • Java8的default和static关键字的使用讲解

    1. default和static关键字 a.default 用在接口中, 为该接口的实现类的方法.  --> 不能通过接口直接调用. static 也是用在接口中, 同Class中的static方法一样, 是类级别的方法, 而不是对象的方法.  --> 可以通过接口直接调用. b.一个接口可以有多个default方法, 也可以有多个static方法. 2. default 在使用中的注意事项 如下面的例子 有两个接口, InterA和InterB, 都有一个方法, 为defaultFunct

  • Java回调函数原理实例与代理模式的区别讲解

    java 回调函数例子,及其原理,与代理模式的区别 回调函数 应用程序(application program)会时常通过API调用库里所预先备好的函数.但是有些库函数(library function)却要求应用先传给它一个函数,好在合适的时候调用,以完成目标任务.这个被传入的.后又被调用的函数就称为回调函数(callback function). 作用: 可以把调用者与被调用者分开.调用者不关心谁是被调用者,所有它需知道的,只是存在一个具有某种特定原型.某些限制条件(如返回值为int)的被调

  • Java事件处理步骤讲解

    什么是事件? 用户对组件的一个操作,称之为一个事件. 事件源:能够产生事件的GUI组件对象. 事件处理方法:能够接受,解析和处理事件类对象,实现与用户交互功能的方法. 事件监听器:可以处理事件的一个类. 处理事件步骤: 假设事件为XXXX 1.向事件源注册某种事件的事件监听器对象 addXXXXListener(...); 2.设计好可以处理这种事件的事件监听器 class 类名 implements XXXXListener{ 重写XXXXListener接口中的方法 } 说明: 要想设计出能

  • BeanDefinition基础信息讲解

    public class BeanDefinitionHolder implements BeanMetadataElement { private final BeanDefinition beanDefinition; private final String beanName;//beanID @Nullable private final String[] aliases;//Bean的别名数组 } public interface BeanDefinition extends Attr

  • Java BeanPostProcessor与BeanFactoryPostProcessor基础使用讲解

    目录 前言 BeanPostProcessor 接口定义 执行时机 BeanFactoryPostProcessor 接口定义 执行时机 前言 BeanPostProcessor 接口定义了一个你可以自己实现的回调方法,来实现你自己的实例化逻辑.依赖解决逻辑等,如果你想要在Spring完成对象实例化.配置.初始化之后实现自己的业务逻辑,你可以补充实现一个或多个BeanPostProcessor的实现. BeanFactoryPostProcessor的定义和BeanPostProcessor相似

  • SSH在登录服务器后如何显示基础信息

    前言 本文主要给大家介绍了SSH登录服务器后显示基础信息的相关内容,分享出来供大家参考学习,下面来看看详细的介绍: 方法如下: 安装landscape-common,可以在登录时候显示一些基础的信息,例如CPU内存占用等等 sudo apt-get install landscape-common 安装update-notifier-common,当有软件包更新的时候,会在SSH登录成功后提示用户 sudo apt-get install update-notifier-common 效果如下:

  • Java绘图技术基础(实例讲解)

    如下所示: public class Demo1 extends JFrame{ MyPanel mp=null; public static void main(String[] args){ Demo1 demo=new Demo1(); } public Demo1(){ mp=new MyPanel(); this.add(mp); this.setSize(400,300); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); th

  • python常量折叠基础知识点讲解

    1.概念 所谓常量折叠,指的是在编译时就查找并计算常量表达式,而不是在运行时再对其进行计算,从而会使运行时更加精简和快速. 2.实例 在 Python 中,我们可以使用反汇编模块(Disassembler)获取 CPython 字节码,从而更好地了解代码执行的过程. 当使用dis模块反汇编上述常量表达式时,我们会得到以下字节码: >>> import dis >>> dis.dis("day_sec = 24 * 60 * 60") 0 LOAD_C

  • Java 基础全面讲解StringBuffer类的使用

    目录 StringBuffer类 常用方法 字符串连接 指定位置添加内容 字符串反转 替换指定范围的内容 字符串截取 删除指定范围的字符串 查找指定的内容是否存在 String与StringBuffer的区别 Java 常用类 StringBuffer类 StringBuffer类的字符串可以被改变 常用方法 方法 类型 作用 public StringBuffer() 构造 StringBuffer的构造方法 public StringBuffer append(char c) 方法 追加 p

  • C语言程序的编译与预处理基础定义讲解

    目录 程序的翻译环境和执行环境 1.翻译环境 2.运行环境 预处理详解 预定义符号 #define #define定义宏 #define替换规则 #和## 带副作用的宏参数 宏和函数对比 命名约定 #undef 命令行定义 条件编译 文件包含 程序的翻译环境和执行环境 在ANSIC的任何一种实现中,存在两个不同的环境:翻译环境和执行环境 翻译环境:源代码被转换为可执行的机器指令. 执行环境:实际执行代码. 1.翻译环境 组成一个程序的每个源文件通过编译分别转换成目标文件(object code)

  • C++类模板与函数模板基础详细讲解

    目录 函数模板 类模板 总结 函数模板 当我们想要定义一个可以支持泛型的函数时,就要采用函数模板的方式了.所谓泛型就是可以支持多种类型的操作,比如我们定义一个compare操作,他可以根据传递给他的参数类型动态调用对应的函数版本,实现多种类型的比较. template <typename T> int compare(const T &v1, const T &v2) { if (v1 < v2) return -1; if (v2 < v1) return 1;

  • Java ArrayList类的基础使用讲解

    目录 什么是ArrayList类 ArrayList使用步骤 常用方法和遍历 如何存储基本数据类型 数组的长度是固定的,无法适应数据变化的需求.为了解决这个问题,Java提供了另一个容器 java.util.ArrayList集合类,让我们可以更便捷的存储和操作对象数据. 什么是ArrayList类 java.util.ArrayList 是大小可变的数组的实现,存储在内的数据称为元素.此类提供一些方法来操作内部存储 的元素. ArrayList 中可不断添加元素,其大小也自动增长. Array

  • Android同步异步任务与多线程及Handler消息处理机制基础详细讲解

    目录 一.同步与异步 Android中的多线程 Android中的多线程与主线程与子线程 Handler异步通信系统 使用新线程计算质数 一.同步与异步 同步的执行任务:在执行程序时,如果没有收到执行结果,就一直等,不继续往下执行,直到收到执行结果,才接着往下执行. 异步的执行任务:在执行程序时,如果遇到需要等待的任务,就另外开辟一个子线程去执行它,自己继续往下执行其他程序.子线程有结果时,会将结果发送给主线程 Android中的多线程 线程:通俗点讲就是一个执行过程.多线程自然就是多个执行过程

随机推荐