第3章 Spring Bean的装配(上)

3-1:配置项及作用域

  

  1.Bean的配置项:

    -- Id

    -- Class (这个必须,其他的都可以不配置)

    -- Scope (作用域)

    -- Constructor arguments (属性注入: 构造器注入)

    -- properties  (属性注入:设值注入)

    -- Autowired mode(自动装配模式)

    -- lazy-initialization mode (懒加载模式)

    -- Initialization/destruction method (初始化和销毁)

   2. 获取方式

    -- byName (要求被获取的bean有id)

    -- byType (要求被获取的bean有class,id可有可无)

   3. bean的作用域

    -- singleton: 单例,一个Bean容器中只存在一份(默认)

    -- prototype: 每次请求(每次使用)创建新的实例,destroy方式不生效

    -- request: 每次http请求创建一个实例且仅在当前request内有效

    -- session: 同上,每次http请求创建,当前session内有效

    -- global session:基于portletde的web中有效(portlet定义了global session), 如果在  web中,同session   (适合多个子系统)

      如:使用了singleton,那么Bean容器中只有一个

      

3-2 Bean的生命周期:

  1.生命周期:定义  --> 初始化 --> 使用 --> 销毁

  2.初始化的两种方式:

    -- 实现 org.springframework.beans.factory.InitializingBean接口,覆盖afterPropertiesSet方法

      

    -- XML配置init-method:

      

   3.销毁的两种方法

     -- 实现 org.springframework.beans.factory.DisposableBeans接口,覆盖destroy方法

        

     -- 配置 destroy-method

      

   4.全局配置默认初始化、销毁方法

      

   5. 三种配置初始化、销毁方法的总结

(接口 > 配置文件 )   >  全局

   实现接口的初始化和销毁先于在配置文件中配置的初始化和销毁方法,他们都会覆盖掉全局配置的这些方法,全局的配置的方法不执行。配置了全局的初始化和销毁方法,即使没有实现这些方法,也不会报错。另外两种方法配置了就必须实现,否则会报错

3-3 Aware接口

  1.概述

    -- Spring中提供了一些以Aware结尾的接口,实现了Aware接口的bean在被初始化之后,可以获取相应的资源

    -- 通过Aware接口,可以对Spring相应资源进行操作(一定要慎重)

    -- 为对Spring进行简单的扩展提供了方便的入口

  2.常见接口

    

    

    

    举例:ApplicationContextAware:Bean类实现该接口,通过该接口提供的方法,可以直接获取spring上下文,而不用我们自己手动创建,也可以利用拿到的context去判断下某些bean是否存在

    xml:

      

    Java:

      

    JUnit

      

    结果

      

3-4 Bean的自动装配

  0.概述

    

   1).  被装配对象

    

   2). 装配对象

    

  3). xml配置

    

   4).JUnit测试

    

   5).结果

    

3-5 Resource

  1. Resource:针对于资源文件的统一接口

    -- UrlResource: URL对应的资源,根据一个URL地址即可构建

    -- ClassPathResource : 获取类路径下的资源文件

    -- FileSystemResource : 获取文件系统里面的资源

    -- ServletContextResource : ServletContext封装的资源,用于访问ServletContext环境下的资源

    -- InputStreamResource : 针对于输入流封装的资源

    -- ByteArrayResource : 针对于字节数组封装的资源

  2. ResourceLoader:  所有的application contexts都实现了ResourceLoader接口,因此所有的application contexts都可以被用作获取Resource实例

    

    前缀类型:

      

  3. 例子

  

  MoocResource实现了ApplicationContextAware接口,所以通过setApplicationContext方法获取到applicationContext,然后就可以利用他再resource方法中获取资源了。

Spring听课笔记(专题二)的更多相关文章

  1. Spring听课笔记(专题二下)

    第4章 Spring Bean基于注解的装配 4.1 Bean的定义及作用域的注解实现 1. Bean定义的注解 -- @Component是一个通用注解,可用于任何bean -- @Reposito ...

  2. Spring听课笔记(专题一)

    Spring入门课程:https://www.imooc.com/learn/196 第0章: Spring是为解决企业应用程序开发复杂性而创建的一个Java开源框架,应用非常广泛.业内非常流行的SS ...

  3. Spring使用笔记(二)Bean装配

    Bean装配 Spring提供了3种装配机制: 1)隐式的Bean发现机制和自动装配 2)在Java中进行显示装配 3)在XML中进行显示装配 一)自动化装配 1.指定某类为组件类: @Compone ...

  4. Spring学习笔记(二)——Spring相关配置&属性注入&Junit整合

    一.Spring的相关配置 1.1 Bean元素 class属性:被管理对象的完整类名 name属性:给Bean起个名字,能重复,能使用特殊字符.后来属性 id属性:给Bean起个名字,不能重复,不能 ...

  5. Spring 学习笔记(二)

      一.Spring 中的bean配置 –配置形式:基于 XML 文件的方式:基于注解的方式 –Bean 的配置方式:通过全类名(反射).通过工厂方法(静态工厂方法 & 实例工厂方法).Fac ...

  6. Spring学习笔记(二) 初探Spring

    版权声明 笔记出自<Spring 开发指南>一书. Spring 初探 前面我们简单介绍了 Spring 的基本组件和功能,现在我们来看一个简单示例: Person接口Person接口定义 ...

  7. Spring听课笔记(tg)AOP

    好文:https://blog.csdn.net/javazejian/article/details/56267036 通过一个实例来理解 1.  需求:实现算术计算器,可以加减乘除,同时记录日志 ...

  8. Spring学习笔记之二----基于XML的Spring AOP配置

    在Spring配置文件中,通常使用<aop:config>元素来设置AOP,其中应包括: <aop:aspect>指定aspect,aspect是一个POJO类,包含了很多的a ...

  9. (转) Spring框架笔记(二十五)——NamedParameterJdbcTemplate与具名参数(转)

    在经典的 JDBC 用法中, SQL 参数是用占位符 ? 表示,并且受到位置的限制. 定位参数的问题在于, 一旦参数的顺序发生变化, 就必须改变参数绑定. 在 Spring JDBC 框架中, 绑定 ...

随机推荐

  1. JavaScript 获取数组对象中某一值封装为数组

    1.获取数组对象中某一值封装为数组(一) data = [["2000-06-05",116],["2000-06-06",129]]; var dateLis ...

  2. C语言实现汉诺塔

    汉诺塔 要把A柱子上的盘子移动到C柱子上,在移动过程中可以借助B柱子,但是要求小的盘子在上大的盘子在下. 解题思路: 1.把A柱子上的前N-1个盘子借助C柱子,全部移动到B柱子上(过程暂不考虑),再把 ...

  3. 如何在 Linux 系统查询机器最近重启时间

    如何在 Linux 系统查询机器最近重启时间 在你的 Linux 或类 UNIX 系统中,你是如何查询系统上次重新启动的日期和时间?怎样显示系统关机的日期和时间? last 命令不仅可以按照时间从近到 ...

  4. [简单-剑指 Offer 53 - I. 在排序数组中查找数字 I]

    [简单-剑指 Offer 53 - I. 在排序数组中查找数字 I] 统计一个数字在排序数组中出现的次数. 示例 1: 输入: nums = [5,7,7,8,8,10], target = 8 输出 ...

  5. RocetMQ搭建攻略和问题解决之道

    最近有在尝试给项目加入消息中间件服务,首先想到了鼎鼎大名的RocketMQ.RocketMQ是一款高性能的.分布式消息中间件,由阿里开源.它提供了丰富的消息拉取方式,能够处理上亿级的海量数据,甚至在阿 ...

  6. HTML学习案例--仿淘宝商品信息

    步骤:1.布局分析 2.敲代码 考察知识点: 1.类选择器(素材第四天) 2.CSS关于display,padding,margin的应用 3.如何用div布局 总结: 如果想让一行有两组以上的字块, ...

  7. 如何利用Typora编写博客,快速发布到多平台?

    在不同的平台发布同样的文章,最让人头疼的就是图片问题,如果要手动一个个去重新上传,耗时耗力,还容易搞错.下面分享的方法,可以将Typora编写的文章快速发布到CSDN.微信公众号.博客园.简书等平台. ...

  8. spring boot(一):什么是spring boot

    什么是spring boot 官网说的很清晰 一.Overview Spring Boot makes it easy to create stand-alone, production-grade ...

  9. 风炫安全WEB安全学习第十八节课 使用SQLMAP自动化注入(二)

    风炫安全WEB安全学习第十八节课 使用SQLMAP自动化注入(二) –is-dba 当前用户权限(是否为root权限) –dbs 所有数据库 –current-db 网站当前数据库 –users 所有 ...

  10. Spring Boot -- 外部配置的属性使用

    Spring Boot允许使用propertities文件.yaml文件或者命令行参数作为外部配置. 命令行参数配置 Spring Boot可以基于jar包运行,打成jar包的程序可以直接通过下面的命 ...