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. Flask实战-留言板-使用Bootstrap-Flask简化页面编写

    使用Bootstrap-Flask简化页面编写 扩展Bootstrap-Flask内置了可以快速渲染Bootstrap样式HTML组件的宏,并提供了内置的Bootstap资源,方便快速开发,使用它可以 ...

  2. 【转】LNK1123: 转换到 COFF 期间失败: 文件无效或损坏

    用VS2010编译C++项目时出现这样的错误: LNK1123: 转换到 COFF 期间失败: 文件无效或损坏 方案一:(这个方法比较好,在用qt运行时出现问题也能解决) 复制 C:\Windows\ ...

  3. restful 跨域

    同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能. 就浏览器而言的, http://127.0.0.1:8000  协议 域名 端口 跨域 问题// 简单 ...

  4. ES6 Promise用法讲解

    所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果. ES6 规定,Promise对象是一个构造函数,用来生成Promise实例. 下面代码创造了一个 ...

  5. Oarcle之组函数

    组函数 avg 求20部门的平均薪水为多少? select avg(sal) avgsal from emp where deptno = 20:  sum 求20部门的员工的总薪水 select s ...

  6. [算法] 举一反三之n重复数组中找唯一m重复异类数

    n重复数组,是指数组中的数字都出现n次: 唯一m重复异类数,是指存在唯一一个没出现n次,只出现了m次的数: 这里我简记它为nX+my问题,求解y,其中m < n,数组中都是整数: 3X+y问题 ...

  7. 2019/4/17 wen 注解、垃圾回收、多线程

  8. Rabbit原理理解

    1.RabbitMQ知多少   圣杰 2.[RabbitMQ]——三种Exchange模式(Fanout.Direct.Topic) https://blog.csdn.net/hao134838/a ...

  9. kubernets event 分析

    1. event 是一个很重要的组成部分 event 分析 Kubernetes(K8s)Events介绍(上) Kubernetes Events介绍(中) Kubernetes Events介绍( ...

  10. 解决IDEA创建多模块项目找不到创建class类的问题

    最近在利用idea创建一个多模块的java项目,但是让人十分抓狂的事,模块竟然找不到创建class类的选项,如图 前提:创建模块后假如右下角出现 务必要点击import Changes .然后看下是否 ...