• 10-20 Spring框架(二)—— IoC核心


    一、概念

      IOC(控制反转)就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部的容器负责,这样控制权就由应用转移到外部容器,控制权的转移就是所谓的反转。

      控制权转移带来的好处就是降低了业务对象之间的依赖程度(低耦合,高内聚)

    二、DI(依赖注入)

      DI(Dependency Injection,依赖注入)可以向某个对象动态的注入它所依赖的其他对象

      依赖注入的方式

        1.构造器注入

        2.方法注入

        3.接口注入
       注意:Spring的IOC容器仅支持构造器和方法注入

             

    三、IOC容器

      Spring IOC容器是指实现IOC(控制反转)和DI(依赖注入)概念的一个Spring组件,开发者使用IOC容器可以获得IOC/DI带来的降低耦合度和简化开发的特性

      3.1 Bean

        Spring 中使用 Bean 来表示应用组件,一个 Bean 组件可以是任何形式的简单 Java 类实例,Spring 中使用 IoC 容器来管理 Bean 的生命周期(Bean 的创建和销毁)

                

      3.2 BeanFactory(Bean工厂)

        1.BeanFactory是Spring框架最核心的接口,它提供了高级的IOC的配置机制;BeanFactory使管理不同类型的java对象成为可能。

        2.BeanFactory是Spring框架 的基础设施,属于底层封装组件,专供Spring框架内部使用。

      3.3 ApplicationContext(应用上下文)

        ApplicationContext是建立zaiBeanfactory基础之上,提供了更多的面向应用的功能。一般称beanfactory为IOC容器,而称ApplicationContext为应用上下文

        ApplicationContext面向Spring框架的开发者,属于上乘封装组件,专供开发者使用

        通过ApplicationContext应用方法上下文实例调用其getBean()从IOC容器中即可获得Bean对象实例。

      3.4 Spring有三种启动IOC容器的方式

        1.classpathXMLApplicationContext(相对路径)

          ApplicationContext ctx = new ClassPathxmlApplicationComtext(“包路径/beans.xml”)

        2.fileSystemXMLApplicationContext(绝对路径)

          文件路径/beans.xml

        3.XMLwebApplicationContext(web配置路径)

    四、装配bean

      装配 Bean 是指在 Spring IoC 容器中创建 Bean 组件和建立 Bean 组件之间的依赖关系的过程,即实现 IoC(控制反转)和 DI(依赖注入)。
      Spring 支持三种装配 Bean 的方式:

        基于 XML 配置装配 Bean

        基于注解装配 Bean

        基于 Java 类装配 Bean

      4.1开启注解

    <!--Spring IoC 容器需要在 Spring 配置中开启注解(默认禁用注解)-->
    <context:annotation-config />
    <!--Spring IoC 容器需要自动检测 Bean(扫描 Java 类中 Bean 组件) -->
    <context:component-scan packages=“包路径”/>

      4.2定义Bean组件注解(ioc)

        @Component

          标识java类为Spring Bean组件(通用注解)
        @Controller
          标识三层架构中表现层的java类Spring Bean组件
        @Service
          标识三层架构中业务逻辑层的java类Spring Bean组件
        @Repository
          标识三层架构中数据访问层或持久层的java类Spring Bean组件

      4.3 Bean组件依赖注入注解

        @Autowired

          可以用于标注setter方法
          可以用于标注构造器
          可以用于直接标注属性(常用)
        @Resource
          使用与@Autowired注解相同
        @Qualifier
          明确指定需要自动装配的Bean组件

    本文以学习、研究和分享为主,版权归作者和博客园共有,欢迎转载,如果文中有不妥或者错误的地方还望大神您不吝指出,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
  • 相关阅读:
    [To be translated] Nova:libvirt image 的生命周期
    Neutron 理解(5):Neutron 是如何向 Nova 虚机分配固定IP地址的 (How Neutron Allocates Fixed IPs to Nova Instance)
    Cinder 调试
    SSH 无密码访问其它机器 和 Windows 上 putty 无密码访问 Linux 机器
    Hadoop 数据库
    Hadoop 分布式文件系统
    C++ 在继承中虚函数、纯虚函数、普通函数,三者的区别
    Google Scholar 论文参考文献的自动生成
    Linux shell ${}简单用法
    C/C++ 获取目录下的文件列表信息
  • 原文地址:https://www.cnblogs.com/bhhh/p/13854203.html
Copyright © 2020-2023  润新知