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的更多相关文章

  1. Spring学习笔记(3)——Bean的注入方式

    依赖注入 依赖注入支持属性注入.构造函数注入.工厂注入. 属性注入: 属性注入即通过setXxx()方法注入Bean的属性值或依赖对象 属性注入要求Bean提供一个默认的构造函数(无参构造函数),并为 ...

  2. Spring学习笔记(2)——Bean的配置

    要使应用程序中的Spring容器成功启动,需要以下三个方面的条件都具备: 1.Spring框架的类包都已经放到应用程序的类路径下 2.应用程序为Spring提供完备的Bean配置信息 3.Bean的类 ...

  3. Spring学习笔记—装配Bean

    在Spring中,对象无需自己负责查找或创建与其关联的其他对象.相反,容器负责把需要相互协作的对象引用赋予各个对象.创建应用对象之间协作关系的行为通常称为装配(wiring),这也是依赖注入的本质. ...

  4. Spring学习笔记之bean配置

    1.命名bean 每个bean都有一个或者多个的的标识符.这些标识符必须在加载他们的容器里边唯一.一个bean经常有且只有一个标识符,但是如果需要超过一个的名字,可以考虑额外的别名. 基于xml的配置 ...

  5. Spring学习笔记之Bean的实例化

    一.bean的实例化方法有3种, 1.构造器实例化 2.静态工厂方法实例化 3.实例工厂方法实例化 二.用构造器来实例化 <bean id="ShunDao" class=& ...

  6. Spring学习笔记——02 Bean的命名及实例化

    一.Bean的命名 前一篇讲到IoC是一个管理Bean的容器,Bean多数情况下都是通过XML文件进行配置的,其中Bean的命名有以下几种方式,现在梳理一下. 1. 不指定id,只配置类名 <b ...

  7. Spring教程笔记(3)

    getBean() ApplicationContext接口获取Bean方法简介: • Object getBean(String name) 根据名称返回一个Bean,客户端需要自己进行类型转换: ...

  8. Spring学习笔记--注入Bean属性

    这里通过一个MoonlightPoet类来演示了注入Bean属性property的效果. package com.moonlit.myspring; import java.util.List; im ...

  9. spring学习笔记之---bean管理

    bean管理(xml) (一)spring的工厂类 FileSystemXmlApplicationContext 读取磁盘配置文件 (二)bean实例化的三种方式 (1)使用类构造器实例化(默认无参 ...

随机推荐

  1. Can't find msguniq. Make sure you have GNU gettext tools 0.15 or newer installed

    Python Django生成国际化和本地化.po文件步骤1.在settings文件中,添加一下内容: LANGUAGES = ( ('zh-hans', ugettext_lazy('Simplif ...

  2. (Review cs231n) Object Detection

    目标:我们有几个类别,然后我们要在这张图中找到这些类的所有实例 解决思路:是否可以按照回归的思路进行求解呢? 但是受限制于确定的种类输出问题. 方法:分类和回归是解决问题的两个套路,我们现在对于目标的 ...

  3. Gatling实战(一)

    对Gatling早有耳闻,据说比jmeter的性能要好很多,我第一次试用的时候因为本机安装的jdk版本不对无法跑起来,试用失败后,因为没时间就一直没继续研究了.我当时是去java官网下载最新的jdk覆 ...

  4. bash 基础命令

    bash的基础特性(): () 命令历史 history 环境变量: HISTSIZE:命令历史记录的条数: HISTFILE:~/.bash_history: HISTFILESIZE:命令历史文件 ...

  5. day 06

    深浅拷贝 # 值拷贝:应用场景最多ls = [1, 'abc', [10]]​ls1 = ls  # ls1直接将ls中存放的地址拿过来# ls内部的值发生任何变化,ls1都会随之变化​ls2 = l ...

  6. 大量的rcuob进程

    环境: OS:Centos 7 问题,今天采购了一台dell R430机器,启动发现大量的如下进程[root@localhost opt]# toptop - 02:07:57 up 6:39, 2 ...

  7. 关于SQL优化的一点建议

    前段时间一直在做关于性能优化相关的工作,结合自己的实际工作经验,只针对SQL层面提一些优化的规范和建议. 针对SQL编写 1.单条SQL长度不宜超过100行: 2.SQL子查询不宜嵌套3层: 子查询嵌 ...

  8. 汇编笔记-DOSBox安装和使用(转载)

    我自己安装使用在Windwos10下面. [DOSBox简介] 1. 官方网址:http://www.dosbox.com/. 2. debug功能在win7之后系统已经不自带了,即64位系统是不能直 ...

  9. ES6常用语法(上)

    ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了.它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应 ...

  10. 论文笔记:Fast Neural Architecture Search of Compact Semantic Segmentation Models via Auxiliary Cells

    Fast Neural Architecture Search of Compact Semantic Segmentation Models via Auxiliary Cells 2019-04- ...