Spring学习笔记(3.IOC及Bean容器)

1. IOC

1.1 接口

  • 用于沟通的中介物的抽象化
  • 实体把自己提供给外界的一种抽象化说明,用以由内部操作分离处外部沟通方法,使其能被修改内部而不影响外界其他实体与其交互的方式
  • 对应Java接口即声明,声明了那些方法是对外公开提供的
  • 在java8中,接口可以拥有方法体

1.2 面向接口编程

  • 结构设计中,分清层次及调用关系,每层只向外(上层)提供一组功能接口,各层间仅依赖接口而非实现类
  • 接口实现的变动不影响各层间的调用,这一点在公共服务中尤为重要
  • 面向接口编程中的接口是用于隐藏具体实现和实现多态性的组件
  • 例子:
// 接口
public interface OneInterface {
    String hello(String word);
}

public class OneInterfaceImpl implements OneInterface {
    String hello(String word) {
        return "hello" + word;
    }
}
// 使用
public class Main {
    public static void main(String[] args) {
        OneInterface oif = new OneInterfaceImpl();
        System.out.println(oif.hello("word"));
    }
}

1.2 什么是IOC

  • IOC: 控制反转,控制权的转移,应用程序本身不负责以来对象的创建和维护,而是由外部容器负责创建和维护
  • DI(Dependency Injection 依赖注入)是其一种实现方式
  • 目的:创建对象并且组装对象之间的关系
    这里写图片描述

1.2.1 扩展理解

2004年,Martin Fowler探讨了同一个问题,既然IOC是控制反转,那么到底是哪些方面的控制被反传了呢?,经过详细的分析和论证后,他得出了答案:获得依赖对像的过程被反转了。控制被反传之后,获得依赖对象的过程有自身管理变味了有IOC容器主动注入。于是,他给“控制反转”去了一个更适合的名字叫做依赖注入(Dependency Injection),就是有IOC容器在运行期间,动态的将某种依赖关系注入到对象中

1.2.2 控制反转与房屋中介

这里写图片描述

1.3 自从有了IOC之后

  • 不必自己创建对象了,IOC机制就提供了
  • 面向接口编程,IOC实现了
  • 不管对象了,IOC管了

2. 单元测试

  • 下载junit-*.jar并引入工程
  • 创建UnitTestBase类,完成对Spring配置文件的加载销毁
  • 所有的单元测试类都继承自UnitTestBase,通过他的getBean方法获取想要得到的对象
  • 子类(具体执行单元测试的类)加注解:@RunWith(BlockJUnit4ClassRunner.class)
  • 单元测试方法加注解:@Test
  • 右键选择要执行的单元测试方法执行或执行一个类的全部单元测试方法

3. Spring的Bean容器

3.1 Bean容器配置

  • 刚才的接口在Spring中的配置方式
    这里写图片描述

3.2 Bean容器初始化

  • 基础:两个包

    1. org.springframework.beans
    2. org.springframework.context

    BeanFactory提供配置结构和基本功能,加载并初始化Bean
    ApplicationContext保存了Bean对象并在Spring中被广泛使用

  • 方式,ApplicationContext

    1. 本地文件
    2. Classpath
    3. Web应用中依赖servlet或Listener
      这里写图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值