spring-ioc笔记

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ting_163/article/details/89459260

ApplicationContext的三种常见的实现类:

  • ClassPathXmlApplicationContext: 加载类路径下的配置文件
  • FileSystemXmlApplicationContext: 加载磁盘路径下的配置文件
  • AnnotationConfigApplicationContext: 用于读取注解创建的容器

核心容器接口引发的问题:

  1. ApplicationContext:
  • 它在构建核心容器时,创建对象采用的策略是立即加载的方式. 也就是说,只要一读取完配置文件就马上创建配置文件中配置巍峨对象.
  • 创建产生单例对象
  1. BeanFactory:
  • 在构建容器对象时,采用的策略是延迟加载的方式. 也就是说,什么时候根据id获取对象,什么时候才创建对象.
  • 创建产生多例对象
  1. 创建Bean的三种方式:
  • 使用构造器创建
<bean id ="accountService" class="com.tcl.service.impl.AccountServiceImpl"/>
  • 使用普通工厂方法创建对象
<bean id ="instanceFactory" class="com.tcl.factory.InstanceFactory"/>
<bean id="accountService" factory-bean="instanceFactory" factory-method="getAccountService"/> 
  • 使用工厂方法中的静态方法创建对象(使用静态方法创建对象,并存入spring容器中)
<bean id="accountService" class="com.tcl.factory.StaticFactory" factory-method="getAccountService"/>
  1. bean的作用范围:
  • singleton: 单例, 默认值
  • prototype: 多例
  • request: 作用于web请求范围
  • session: 作用于web会话范围
  • global-session: 作用于集群环境的会话范围
  1. bean的生命周期
    单例对象:
  • 出生: 随着容器的创建而产生
  • 活着: 只要容器存在, 则对象就一直存活
  • 死亡: 容器销毁, 则对象也消亡
  • 总结: 同容器的生命周期相同

多例对象:

  • 出生: 当使用对象时,容器才创建bean实例对象
  • 活着: 对象在使用过程中一直存活
  • 死亡: 当对象长时间不被使用时, 会被JVM回收
  1. 依赖注入的三种方式
  • 构造器创建
    优点: 在获取bean时, 注入数据是实例化的必须操作,否则无法创建对象
    弊端: 在创建对象时, 如果用不到这些数据, 也得提供
  • set方法注入依赖
    优点: 创建对象时没有限制, 可以直接使用默认的构造函数
    弊端:
  • 注解注入依赖
  1. spring整合junit
  • spring-test依赖:
<dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>4.3.2.RELEASE</version>
</dependency>
  • 使用junit注解替换main方法
    @Runwith
  • 告知spring运行器, 说明spring和ioc是基于xml还是注解
    @ContextConfiguration:
    locations: 指定xml配置文件的位置, 并要加上classpath:
    classes: 指定注解类的位置

当spring 版本在5.0以上,则junit版本需要在4.12及以上

  1. 常用注解
  • bean:
    作用: 把当前方法的返回值作为bean存储在Ioc容器中
    属性:
    name: 用于指定bean的id. 默认是当前方法的方法名
  • import :
    作用: 用于导入其他配置类
    属性:
    value: 用于指定其他配置类的字节码
    当我们使用import注解时, 有import注解的类是父配置类, 而导入的类为子配置类
  • PropertySource:
    作用: 用于指定properties的位置
    属性:
    value: 指定文件位置
    关键字: classapath , 表示在类路径下

传送门

展开阅读全文

没有更多推荐了,返回首页