0. Spring 基础

BeanDefinition

BeanDefinition 表示 Bean 定义:

  1. Spring根据BeanDefinition来创建Bean对象;
  2. BeanDefinition有很多的属性用来描述Bean;
  3. BeanDefiniton是Spring中非常核心的概念。
  4. BeanDefiniton中重要的属性:
    a. beanClass:表示一个bean的类型,比如:UserService.class、OrderService.class,Spring在创建Bean的过程中会根据此属性来实例化得到对象;
    b. scope:表示一个作用域(Spring中有五种作用域),比如:singleton、prototype分别标识单例Bean、原型Bean;
    c. isLazy:表示一个Bean是不是需要懒加载,原型bean和isLazy属性不起作用,懒加载的单例bean,会在第一次getBean的时候生成该bean,非懒加载的单例bean,则会在spring启动的过程中直接生成好;
    d. dependsOn:表示一个bean在创建之前所依赖的其他bean得先全部创建好;
    e. primary:表示一个bean是主bean,在spring中一个类型可以有个bean对象,在进行依赖注入时,如果根据类型找到了多个bean,此时会判断这些bean中是否存在一个主bean,如果存在,则直接将这个bean注入给属性;
    f. initMethodName:表示一个bean的初始化方法,一个bean的生命周期过程中有一个步骤叫初始化,spring会在这个步骤中去调用bean的初始化方法,初始化逻辑由程序员自己控制,表示程序员可以自定义逻辑对bean进行加工。

Spring中的五种作用域

  1. singleton:在spring IoC容器仅存在一个Bean实例,Bean以单例方式存在,默认值
  2. prototype:每次从容器中调用Bean时,都返回一个新的实例,即每次调用getBean()时,相当于执行newXxxBean()
  3. request:每次HTTP请求都会创建一个新的Bean,该作用域仅适用于WebApplicationContext环境
  4. session:同一个HTTP Session共享一个Bean,不同Session使用不同的Bean,仅适用于WebApplicationContext环境
  5. globalession:一般用于Portlet应用环境,该作用域仅适用于WebApplicationContext环境

BeanFactory

  1. BeanFacory 是一种Spring容器;
  2. BeanFacory 直译过来就是Bean工厂,它可以用来创建Bean、获取Bean;
  3. BeanFactory是Spring中非常核心的组件。

FactoryBean 和 BeanFactory 区别?

  1. BeanFactory:Bean工厂,是一个工厂(Factory),Spring IoC容器 的最高层接口就是BeanFactory,它的作用是管理Bean,即实例化、定 位、配置应用程序中的对象及建立这些对象之间的依赖。
  2. FactoryBean:工厂Bean,是一个Bean,作用是产生其他Bean实 例。这种Bean没有什么特别的要求,仅需要提供一个工厂方法,该方法 用来返回其他 Bean 实例。在通常情况下,Bean 无须自己实现工厂模 式,Spring容器担任工厂的角色;在少数情况下,容器中的Bean本身就 是工厂,其作用是产生其他Bean实例。 当用户使用容器时,可以使用转义字符“&”来得到FactoryBean本 身,以区别通过FactoryBean产生的实例对象和FactoryBean对象本身。 在BeanFactory中通过如下代码定义了该转义字符:FACTORY_BEAN_PREFIX = “&”

BeanDefiniton、BeanFactory、Bean对象之间的关系?

  1. BeanFactory将利用BeanDefinition来创建Bean对象;
  2. BeanDefinition相当于原材料、Bean对象相当于生产出来的产品,BeanFactory相当于工厂;

BeanFactory核心子接口和实现类

  1. ListableBeanFactory:它可以枚举所有 bean 实例,而不是按照客户的要求逐个尝试按名称查找 bean。预加载所有 bean 定义的 BeanFactory 实现可以实现此接口。
  2. ConfigurableBeanFactory:大多数bean工厂要实现的配置接口。除了BeanFactory 接口方法之外,还提供了配置 bean 工厂的工具。
  3. AutowireCapableBeanFactory:由能够自动装配的 bean 工厂实现,前提是他们希望为现有的 bean 实例公开此功能。
  4. AbstractBeanFactory:抽象基类,提供 ConfigurableBeanFactory SPI 的全部功能。也可以用作 bean 工厂实现的基类,这些实现可以从 resource 资源获取 bean 定义。
  5. DefaultListableBeanFactory:核心实现类

Bean的生命周期

  1. Bean生命周期用来描述Spring中一个Bean创建、销毁过程中所经历的步骤,其中Bean创建过程是重点。
  2. 可以利用Bean生命周期机制对Bean进行自定义加工。

核心步骤

  1. BeanDefintion
  2. 构造方法推断
  3. 实例化(反射)
  4. 属性填充
  5. 初始化
  6. 初始化后

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/273533.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1. Spring 源码:Spring 解析XML 配置文件,获得 Bena 的定义信息

通过 Debug 运行 XmlBeanDefinitionReaderTests 类的 withFreshInputStream() 的方法&#xff0c;调试 Spring 解析 XML 配置文件&#xff0c;获得 Bean 的定义。 大体流程可根据序号查看&#xff0c;xml 配置文件随便看一眼&#xff0c;不用过多在意。 <?xml version&qu…

c++ 读取文件 最后一行读取了两次

用ifstream的eof()&#xff0c;竟然读到文件最后了&#xff0c;判断eof还为false。网上查找资料后&#xff0c;终于解决这个问题。 参照文件&#xff1a;http://tuhao.blogbus.com/logs/21306687.html 在使用C/C读文件的时候&#xff0c;一定都使用过eof&#xff08;&#xff0…

java中的io系统详解(转)

Java 流在处理上分为字符流和字节流。字符流处理的单元为 2 个字节的 Unicode 字符&#xff0c;分别操作字符、字符数组或字符串&#xff0c;而字节流处理单元为 1 个字节&#xff0c;操作字节和字节数组。 Java 内用 Unicode 编码存储字符&#xff0c;字符流处理类负责将外部的…

js获取字符串最后一个字符代码

方法一&#xff1a;运用String对象下的charAt方法 charAt() 方法可返回指定位置的字符。 代码如下 复制代码 str.charAt(str.length – 1) 请注意&#xff0c;JavaScript 并没有一种有别于字符串类型的字符数据类型&#xff0c;所以返回的字符是长度为 1 的字符串 方法二&#…

Unity3D Shader入门指南(二)

关于本系列 这是Unity3D Shader入门指南系列的第二篇&#xff0c;本系列面向的对象是新接触Shader开发的Unity3D使用者&#xff0c;因为我本身自己也是Shader初学者&#xff0c;因此可能会存在错误或者疏漏&#xff0c;如果您在Shader开发上有所心得&#xff0c;很欢迎并恳请您…

JVM:如何分析线程堆栈

英文原文&#xff1a;JVM: How to analyze Thread Dump 在这篇文章里我将教会你如何分析JVM的线程堆栈以及如何从堆栈信息中找出问题的根因。在我看来线程堆栈分析技术是Java EE产品支持工程师所必须掌握的一门技术。在线程堆栈中存储的信息&#xff0c;通常远超出你的想象&…

一个工科研究生毕业后的职业规划

http://blog.csdn.net/wojiushiwo987/article/details/8592359一个工科研究生毕业后的职业规划 [wojiushiwo987个人感触]:说的很诚恳&#xff0c;对于马上面临毕业的我很受用&#xff0c;很有启发。有了好的职业生涯规划&#xff0c;才有了前进的方向和动力&#xff0c;才能…

SQLSERVER中如何忽略索引提示

SQLSERVER中如何忽略索引提示 原文:SQLSERVER中如何忽略索引提示SQLSERVER中如何忽略索引提示 当我们想让某条查询语句利用某个索引的时候&#xff0c;我们一般会在查询语句里加索引提示&#xff0c;就像这样 SELECT id,name from TB with (index(IX_xttrace_bal)) where bal…

JavaScript——以简单的方式理解闭包

闭包&#xff0c;在一开始接触JavaScript的时候就听说过。首先明确一点&#xff0c;它理解起来确实不复杂&#xff0c;而且它也非常好用。那我们去理解闭包之前&#xff0c;要有什么基础呢&#xff1f;我个人认为最重要的便是作用域&#xff08;lexical scope&#xff09;&…

jquery实现二级联动不与数据库交互

<select id"pro" name"pro" style"width:90px;"></select> <select id"city" name"city" style"width: 90px"></select> $._cityInfo [{"n":"北京市","c"…

[016]转--C++拷贝构造函数详解

一. 什么是拷贝构造函数 首先对于普通类型的对象来说&#xff0c;它们之间的复制是很简单的&#xff0c;例如&#xff1a; [c-sharp] view plaincopy int a 100; int b a; 而类对象与普通对象不同&#xff0c;类对象内部结构一般较为复杂&#xff0c;存在各种成员变量。下…

js中调用C标签实现百度地图

<script type"text/javascript"> //json数组 var jsonArray document.getElementById("restaurant").value; var map new BMap.Map("milkMap"); // 创建地图实例 <c:forEach items"${restaurantlist}" var"…

jquery较验组织机构编码

//*************************组织机构码较验************************* function checkOrganizationCode() { var weight [3, 7, 9, 10, 5, 8, 4, 2]; var str 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ; var reg /^([0-9A-Z]){8}-[0-9|X]{1}$/; var organizationcode $("…

自定义GrildView实现单选功能

首先看实现功能截图&#xff0c;这是一个自定义Dialog,并且里面内容由GrildView 绑定数据源&#xff0c;实现类似单选功能。 首先自定义Dialog&#xff0c;绑定数据源 自定义Dialog弹出框大小方法 最主要实现的就是点击颜色切换的功能&#xff0c;默认GrildView的每一项都是蓝色…

Java数字字符串如何转化为数字数组

eg&#xff1a; String numberString "0123456789"; 如何转化为&#xff1a;int[] digitArry new int[]{0,1,2,3,4,5,6,7,8,9}; 解决办法&#xff1a; char[] digitNumberArray numberString.toCharArray(); int[] digitArry new int[digitString.toCharArray().l…

『重构--改善既有代码的设计』读书笔记----序

作为C的程序员&#xff0c;我从大学就开始不间断的看书&#xff0c;看到如今上班&#xff0c;也始终坚持每天多多少少阅读技术文章&#xff0c;书看的很多&#xff0c;但很难有一本书&#xff0c;能让我去反复的翻阅。但唯独『重构--改善既有代码的设计』这本书让我重复看了不下…

微信公共平台接口开发--Java实现

Java微信实现&#xff0c;采用SpringMVC 架构&#xff0c;采用SAXReader解析XML RequestMapping(value"/extend") public class WeixinController { RequestMapping(value"/weixin") public ModelAndView weixin(HttpServletRequest request,HttpServlet…

最大权闭合图hdu3996

定义&#xff1a;最大权闭合图&#xff1a;是有向图的一个点集&#xff0c;且该点集的所有出边都指向该集合。即闭合图内任意点的集合也在改闭合图内&#xff0c;给每个点分配一个点权值Pu&#xff0c;最大权闭合图就是使闭合图的点权之和最大。 最小割建边方式&#xff1a;源点…

非监督学习的单层网络分析

这篇博客对应的是Andrew.Ng的那篇文章&#xff1a;An Analysis o f Single-Layer Networks in Unsupervised Feature Learning&#xff0c;文章的主要目的是讨论receptive field size&#xff0c;number of hidden nodes&#xff0c; step-stride以及whitening在对卷积网络模型…

Spring MVC 验证码

页面 <% page language"java" import"java.util.*" pageEncoding"UTF-8"%> <% String path request.getContextPath(); String basePath request.getScheme()"://"request.getServerName()":"request.getServerP…