Spring教程笔记(3) Bean
Bean配置项
id class必须项
如果根据id来获取bean,要写id;如果根据类型来配置bean,只写class就可以。
scope作用域 constructor arguments properties
Autowiring Mode自动装配模式
懒加载模式
初始化和销毁方法
Bean作用域 scope=“”
5种类型:
1. 单例 singleton:一个bean容器中只有一份 默认方式
2.prototype:同一个bean容器,每次请求创建一个新实例重新new一个,自动垃圾回收,destroy无效
打印this.hashCode()可以区分是否同一个实例
以下3个都和web有关
3. request,每次http请求创建一个新实例,当前request有效
4. session,每次http请求创建一个新实例,当前session有效
5. global session,web中同session;porlet里面有global session的概念
Bean生命周期
定义 xml
初始化 IOC容器启动时生成实例
(1)配置init-method 在xml定义bean时加上 init-method=“init或者其他名字不用加括号” 会自动调用class你写的类的init方法
(2)实现InitializingBean接口,覆盖其afterPropertiesSet方法 不用写init-menthod=“”
public class 你写在class=的类名 implements InitializingBean
{
@Override
public void afterPropertiesSet throws Exception(){}
}
使用 从bean容器中取出实例并使用
销毁 bean容器停止时销毁此容器创建的所有实例
(1)配置destroy-method="cleanup stop或者什么名字" 也得是class里面的方法
(2)实现DisposableBean接口,覆盖其destroy方法。
配置全局bean的初始化和销毁方法:xml最外层<beans default-init-method="xxx不用加括号" defauzheliangglt-destroy-method="xxx"></beans>
而且,就算default-这两个方法不写实现code,也不会报错。
优先级:接口方法 执行顺序先于 init/destroy-method ,有前俩的任一个,default会被覆盖掉不生效(default)。
Aware接口
一些以Aware为结尾的接口,实现这类接口的bean在被初始化之后,可以获取相应的资源。但要慎重!
ApplicationContextAware:要覆盖setApplicationContext(ApplicatoinContext applicationContext)方法
BeanNameAware:要覆盖setBeanName(String arg)方法
getBean()返回一个object
Bean自动装配 Autowiring
不用在xml bean声明properties或constructor-arg
<beans 里面写default-autowire="byName byType constructor之类的"
几种autowiring:
(1)no default
(2)byName 在class=“”类里面自动找和bean id相同的属性名装配。beanid重复的话,容器启动失败。
(3)byType 在class=“”类里面自动找和bean相同类型的属性,如果多个能匹配上的会抛出异常 没找到能匹配上的就什么都不做装配失败
(4)constructor 和byType类似,找和构造器参数类型一样的bean,如果没有找到和构造器参数一致的bean,抛出异常。
Resources资源文件的统一接口
ResourceLoader 加载resource的类,所有ApplicationContext都实现了ResourceLoader接口,
其中getResource方法,参数为String location,返回值为Resource
location可以是 classpath: file: url: 或者无前缀
Spring教程笔记(3) Bean的更多相关文章
- Spring学习笔记(3)——Bean的注入方式
依赖注入 依赖注入支持属性注入.构造函数注入.工厂注入. 属性注入: 属性注入即通过setXxx()方法注入Bean的属性值或依赖对象 属性注入要求Bean提供一个默认的构造函数(无参构造函数),并为 ...
- Spring学习笔记(2)——Bean的配置
要使应用程序中的Spring容器成功启动,需要以下三个方面的条件都具备: 1.Spring框架的类包都已经放到应用程序的类路径下 2.应用程序为Spring提供完备的Bean配置信息 3.Bean的类 ...
- Spring学习笔记—装配Bean
在Spring中,对象无需自己负责查找或创建与其关联的其他对象.相反,容器负责把需要相互协作的对象引用赋予各个对象.创建应用对象之间协作关系的行为通常称为装配(wiring),这也是依赖注入的本质. ...
- Spring学习笔记之bean配置
1.命名bean 每个bean都有一个或者多个的的标识符.这些标识符必须在加载他们的容器里边唯一.一个bean经常有且只有一个标识符,但是如果需要超过一个的名字,可以考虑额外的别名. 基于xml的配置 ...
- Spring学习笔记之Bean的实例化
一.bean的实例化方法有3种, 1.构造器实例化 2.静态工厂方法实例化 3.实例工厂方法实例化 二.用构造器来实例化 <bean id="ShunDao" class=& ...
- Spring学习笔记——02 Bean的命名及实例化
一.Bean的命名 前一篇讲到IoC是一个管理Bean的容器,Bean多数情况下都是通过XML文件进行配置的,其中Bean的命名有以下几种方式,现在梳理一下. 1. 不指定id,只配置类名 <b ...
- Spring教程笔记(3)
getBean() ApplicationContext接口获取Bean方法简介: • Object getBean(String name) 根据名称返回一个Bean,客户端需要自己进行类型转换: ...
- Spring学习笔记--注入Bean属性
这里通过一个MoonlightPoet类来演示了注入Bean属性property的效果. package com.moonlit.myspring; import java.util.List; im ...
- spring学习笔记之---bean管理
bean管理(xml) (一)spring的工厂类 FileSystemXmlApplicationContext 读取磁盘配置文件 (二)bean实例化的三种方式 (1)使用类构造器实例化(默认无参 ...
随机推荐
- storm-sql-kafka问题情况
首先上官方文档:http://storm.apache.org/releases/1.2.2/storm-sql.html 解决的问题 1.kafka版本不对 开始测试时采用storm1.2.2+ka ...
- Nginx 出现 _STORAGE_WRITE_ERROR_:./Runtime/Cache/Home/
Nginx 出现 _STORAGE_WRITE_ERROR_:./Runtime/Cache/Home/ 这种情况是因为 application 没有足的权限 .需要给予777的权限就能解决了
- python函数部分----函数初识
0.来源http://www.cnblogs.com/jin-xin/articles/8241942.html 1.return 返回0个返回值,返回一个返回值.返回多个返回值 None.如果一个变 ...
- JavaScript之事件的绑定与移除
对于事件的绑定的方法有多种多样,但是在解除绑定事件的时候,就要注意使用的是那种绑定事件的方法,因为不同的绑定方法所对应的解除事件是不同的. 1. 原始写法 1.1 绑定事件:对象.事件=事件处理函数 ...
- TeamCity Agent安装
1 docker安装 docker run -it -e SERVER_URL= \ -v /home/lishan/teamcity/conf:/data/teamcity_agent/conf \ ...
- 小米5查看设备号信息及验证type-c数据线
首先,下载adb软件. 接着打开系统的开发者模式和调试模式. 打开cmd软件,切换到adb软件文件夹所在路径,输入命令:adb devices,则能看到设备的设备号信息. 如果设备号是00000001 ...
- linux环境中通过/dev/urandom设备产生随机密码
需求说明: 今天在调试SVN的时候,需要创建用户的随机密码,想了下,在linux环境中是否能够生成呢,就搜索了下, 然后结合看到的帖子,分析一个可以生成密码的命令,在此记录下. 操作过程: 1.通过/ ...
- nodejs-使用multer实现多张图片上传,express搭建脚手架
nodejs-使用multer实现多张图片上传,express搭建脚手架 在工作中,我们经常会看到用户有多张图片上传,并且预览展示的需求.那么在具体实现中又该怎么做呢? 本实例需要nodejs基础,本 ...
- pat1003 迪杰斯特拉法和dfs求最短路
本题的背景是求定点和定点之间的最短路问题(所有的最短路 不是一个解 是全部解,方法手段来自数据结构课程中的迪杰斯特拉算法和dfs(深度优先遍历). 分别用两种方法编程如下代码 dfs #includ ...
- Ubuntu14.04+Dell 7060安装无线/有线网络驱动
7060的有线网卡I219-LM,可以用e1000e的驱动 1.sudo mkdir -p /usr/local/src/e1000e (在/usr/local/src/中新建文件夹e1000e) s ...