Spring文档学习
Spring文档学习
参考Spring Framework Documentation学习
1. IoC 容器
1.1 容器实例化
<beans>
<import resource="services.xml"/>
<import resource="resources/messageSource.xml"/>
<import resource="/resources/themeSource.xml"/>
<bean id="bean1" class="..."/>
<bean id="bean2" class="..."/>
</beans>
注意:这里不建议resource那里使用classpath:URL的写法,因为运行时解决进程会选择最近的classpath根,然后查找它的父文件夹。类路径配置的改变可能会导致错误的路径,找不到对应的资源。
1.2 使用容器
ApplicationContext是高级工厂的接口,能够维护不同bean及其依赖项的注册表。
获取实例:
ApplicationContext T getBean(String name, Class<T> requiredType)
最灵活的变种是GenericApplicationContext与reader相结合(如XmlBeanDefinitionReader)
使用:
GenericApplicationContext context = new GenericApplicationContext();
new XmlBeanDefinitionReader(context).loadBeanDefinitions("services.xml", "daos.xml");
context.refresh();
1.3 Bean Overview
在容器内,bean对象表示为BeanDefinition,其中包含以下元数据:
- 包限定的类名:通常情况是bean的实现类
- Bean行为配置元素,指明bean在容器中如何表现,像scope,生命周期回调等等
- 引用其他bean(称为合作者或依赖)
- 新创建的对象里设置其他配置
BeanDefinition有以下属性:
| Class |
|---|
| Name |
| Scope |
| Constructor arguments |
| Properties |
| Autowiring mode |
| Lazy initialization mode |
| Initialization method |
| Destruction Method |
ApplicationContext允许由用户创建的对象的注册,通过ApplicationContext的getBeanFactory()方法返回DefaultListableBeanFactory。通过这个BeanFactory的registerSingleton()和registerBeanDefinition()方法。
需要ASAP注册Bean元数据和手动提供的单例实例,以便容器在自动装配(auto wire)和其他内省步骤期间正确推理它们。
1.3.1 Naming Beans
Bean命名约定:小写字母开头,驼峰命名。
Spring扫描时,对那些没有命名的bean生成名字,遵循以下原则:采用simple class name,首字母小写。但是特殊情况下,如果有多个字符,并且第一和第二个字母都是大写,则原有的写法会被保留。
当有多个系统的时候,简单的使用xml-based 即可完成别名操作。
1.3.2 实例化beans
bean定义实际上是创建一个或多个对象的配方。
class属性的两种使用方式:
- 通过反射调用构造函数,等同于new操作符
- 通过调用静态工厂方法创建bean。调用静态工厂方法返回的对象类型可能是同一个类也可能是完全不同的类。
内部类的话,class属性需要写二进制代码名,如:com.example.SomeThing$OtherThing
利用构造函数实例化
However, depending on what type of IoC you use for that specific bean, you may need a default (empty) constructor.
利用静态工厂方法实例化
如:
<bean id="clientService"
class="examples.ClientService"
factory-method="createInstance"/>
利用对象工厂方法实例化
例如:
<!-- the factory bean, which contains a method called createInstance() -->
<bean id="serviceLocator" class="examples.DefaultServiceLocator">
<!-- inject any dependencies required by this locator bean -->
</bean> <!-- the bean to be created via the factory bean -->
<bean id="clientService"
factory-bean="serviceLocator"
factory-method="createClientServiceInstance"/>
注意:一个工厂类也可以包含多个工厂方法
这种方法表明工厂bean本身可以通过依赖注入(DI)进行管理和配置
Spring文档学习的更多相关文章
- EasyUI文档学习心得
概述 jQuery EasyUI 是一组基于jQuery 的UI 插件集合,它可以让开发者在几乎完全不需要CSS以及复杂的JS代码情况下完成美观且功能强大的Web界面. 本文主要说明一些如何利用Eas ...
- Spring Security 官网文档学习
文章目录 通过`maven`向普通的`WEB`项目中引入`spring security` 配置 `spring security` `configure(HttpSecurity)` 方法 自定义U ...
- Cassandra1.2文档学习解读计划——为自己鼓劲
最近想深入研究一下Cassandra,而Cassandra没有中文文档,仅有的一些参考书都是0.7/0.6版本的.因此有个计划,一边学习文档(地址:http://www.datastax.com/do ...
- 《MATLAB从入门到放弃》二维曲线和图形绘制基础(二):使用Help文档学习line、plot、plotyy、subplot、hold绘图函数
目录: » plot 最常用的二维曲线绘图函数 > 帮助文档 > 基本使用语法 > 线条的样式.符号和颜色调整 > 图形属性调整 > 使用图形句柄进行设置 » ...
- 这可能是最详细的 iOS 学习入门指南(含书目/文档/学习资料)
1 零基础小白如何进行 iOS 系统学习 首先,学习目标要明确: 其次,有了目标,要培养兴趣,经常给自己一些正面的反馈,比如对自己的进步进行鼓励,在前期小步快走: 再次,学技术最重要的一点就是多动手. ...
- Spring 文档汇总
Spring Batch - Reference Documentation Spring Batch 参考文档中文版 Spring Batch 中文文档 Table 2. JdbcCursorIte ...
- 通过程序校验xml文档学习笔记
校验xml文档,可以通过程序来校验,利用一段js代码即可. 各行代码的含义已经写出,运行这个html文件,检验如下xml代码: 结果如下: 如果xml文档出现错误: 结果如下: 其中,obj.asyn ...
- Nodejs v4.x.0API文档学习(2)Assert断言测试模块
文档参考地址:https://nodejs.org/dist/latest-v4.x/docs/api/ Assert(断言) assert模块提供了一组简单的断言测试方法,可以拥有测试不变量.该模块 ...
- Nodejs v4.x.0API文档学习(1)简介
文档参考地址:https://nodejs.org/dist/latest-v4.x/docs/api/ 简介 下面是用nodejs编写的一个web服务的例子,返回"Hello World& ...
随机推荐
- 并发编程-concurrent指南-计数器CountDownLatch
java.util.concurrent.CountDownLatch 是一个并发构造,它允许一个或多个线程等待一系列指定操作的完成. CountDownLatch 以一个给定的数量初始化.count ...
- React躬行记(7)——表单
表单元素是一类拥有内部状态的元素,这些状态由其自身维护,通过这类元素可让用户与Web应用进行交互.HTML中的表单元素(例如<input>.<select>和<radio ...
- 精美的在线icon
super-tiny-icons(0.2.1)列表 序号 名称 图标 地址 是否使用 1 acast.svg https://cdn.jsdelivr.net/npm/super-tiny-icons ...
- Python 3.5学习笔记(第一章)
本章内容: 1.安装python 3.5 和 PyCharm 社区版 2.第一个python程序 3.变量 4.字符编码 5.用户输入 6.字符串格式化输出 7.if .else .elif 8.fo ...
- error: 'commit' is not possible because you have unmerged files.
解决方案: 1.把修改的文件add下,如:git add bidder_mod/src/common/dragon_bidder_data.cc2.git commit
- React的Context的使用方法简介
context 定义: Context提供了一种方式,能够让数据在组件树中传递,而不必一级一级手动传递. API : createContext(defaultValue?). 使用方法: 首先要引入 ...
- 「PowerBI」分析服务多维数据结构重回关系数据库的一大绝招
在过往Excel催化剂定位的轻量级Excel+PowerBIDesktop的解决方案中,已经做过了近乎完美的PowerBIDesktop数据模型数据导出到Excel工作表的应用,这也是个人版数据应用的 ...
- SP1026 FAVDICE - Favorite Dice[期望DP]
也许更好的阅读体验 \(\mathcal{Description}\) 一个\(n\)面的骰子,求期望掷几次能使得每一面都被掷到 输入有\(T\)组数据,每次输入一个\(n\) 输出保留两位小数 \( ...
- python3.x 与 python2.x 差别记录
从2.x过渡到3.x的时候,遇到了大大小小的坑,于是便记录下来- 1.print: 3.x 所有print都要加 "( )",print更像(就是)一个函数了. 2.x 可以加& ...
- JavaScript数组高性能去重解决方案
在大多数的人眼里,数组去重是一个很简单的课题,很多人甚至熟练掌握了多种数组去重的方法,然而大多时候,我们却忽略了数组去重所消耗的时间资源.譬如我们在做前端性能优化的时候,又有多少人会考虑JavaScr ...