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. How to using Piwis Tester II code Porsche rear end electronics

    V18.100 Piwis Tester II Diagnostic Tool For Porsche With CF30 Laptop High Quality Top 7 Reasons to G ...

  2. Java集合类学习笔记2

    二,具体的集合 集合类型 描述 ArrayList 一种可以动态增长和缩减的索引序列 LinkedList 一种可以在任何位置进行高效地插入和删除操作的有序序列 ArrayDeque 一种用循环数组实 ...

  3. 博客地址更改为csdn博客:https://blog.csdn.net/zysps1

    由于博客园不支持markdown的数学公式等语法,有时分享不方便,特更改阵地为csdn:https://blog.csdn.net/zysps1

  4. 手机APP应用外网访问本地WEB应用

    手机APP应用外网访问本地WEB应用 本地安装了WEB服务端,手机APP应用只能在局域网内访问本地WEB,怎样使手机APP应用从公网也能访问本地WEB? 本文将介绍具体的实现步骤. 1. 准备工作 1 ...

  5. appium+python3+pycharm踩得坑

    错误: selenium.common.exceptions.WebDriverException: Message: A new session could not be created. (Ori ...

  6. 基于OpenCV做“三维重建”(1)--找到并绘制棋盘

    <OpenCV计算机视觉编程攻略(第3版)>这套书已经出到第3版了,如果你非要我说这本书有多好,我说不出来:只是很多我第一手的例子都是来源于这本书的-相比较OpenCV官方提供的代码,这本 ...

  7. mac pycharm快捷键

    Mac键盘符号和修饰键说明 ⌘ Command ⇧ Shift ⌥ Option ⌃ Control ↩︎ Return/Enter ⌫ Delete ⌦ 向前删除键(Fn+Delete) ↑ 上箭头 ...

  8. android开发_文本按钮 与 输入框

    1 TextView:    属性与值 android:text="文本" android:textSize="20sp"              //sp为 ...

  9. 复旦大学2017--2018学年第二学期(17级)高等代数II期末考试第六大题解答

    六.(本题10分)   设 $A$ 为 $n$ 阶幂零阵 (即存在正整数 $k$, 使得 $A^k=0$), 证明: $e^A$ 与 $I_n+A$ 相似. 证明  由 $A$ 是幂零阵可知, $A$ ...

  10. 王之泰201771010131《面向对象程序设计(java)》第十五周学习总结

    第一部分:理论知识学习部分 第13 章 部署应用程序 1.jar文件 a) java 程序的打包:编译完成后,员 将.class 文件压缩打包为 .jar 文件后, GUI 界面 程序就可以直接双击图 ...