• Spring入门


    ---恢复内容开始---

    依赖注入和控制反转Ioc:

    在学习Spring前,首先要理解这两个概念。什么是依赖注入,打个比方,有两个组件A和B,A依赖于B,A是一个类

    Public class A {
        public void methodA() {
                 B b = new B();
            b.methodB();           
        }   
    }

    要在A类的方法中使用B的方法,我们需要先获得B实例的引用,若B是一个具体的类,则可以通过关键字new来创建实例,单如果B是个接口,且有多个实现,那么问题就复杂多了。

    依赖注入是这样处理此种情形的:接管对象的创建工作,并将该对象的引用注入懂啊需要该对象的组件中。一般来说,我们有两种注入方法,set方法和构建方法:

    set方法:

    Public class A {
        private B b;
    
        public void methodA() {
            b.methodB();
        }
    
        public void setB() {
            this.b = b;
        }    
    }

    构建方法注入:

    Public class A {
        private B b;
    
        public void methodA() {
            b.methodB();
        }
    
        public A(B b) {
            this.b = b;
        }    
    }

    然后Spring就是一个接手对象创建的一个框架,Spring管理 对象叫做beans。通过提供一个控制反转容器,来管理对象的依赖关系。因为不再自己new对象,所以也叫做Ioc(控制反转)。

    Spring支持两种配置方法,xml文件和注解两种,此外还要创建一个ApplicationContext对象,代表Spring控制反转容器,org.springframeword.context.ApplicationContext接口有多个实现,包括ClassPathApplicationContext和FileSystemApplicationContext两种实现,他们都需要一个包含beans信息的xml文件,前者尝试在类加载路径中加载配置文件,后者在文件系统中加载。

    下面为从类路径中加载config1.xml和config2.xml的ApplicationContext的一个代码示例:

    Product product = context.getBean("product",product.class);

    xml配置文件大概如下格式:

    <?xml version="1.0" encoding="UTF-8" ?>   
    <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
         xmlns="http://www.springframework.org/schema/beans"  
         xsi:schemaLocation="http://www.springframework.org/schema/beans 
         http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">   
      
    </beans> 

    里面写bean的信息

    <bean name="product" class="xxx.xxx.Product">

    然后通过这个xml文件,我们可以实现:

      直接通过构造器创建一个bean实例

      通过工厂的方法创建一个bean实例(就是set方法),就是在bean元素中加一个属性factory-method="setB"类似的

      在类被毁灭的时候执行一些方法(在bean元素中甲属性destroy-metho="shutdown")

      向构造器传递参数:

        <bean>

          <constructor-arg name="sdfsdf" value="sdfsdf"/>

          ……

        </bean>

      setter方法注入,比如我们现在写好了一个bean为Address类,然后这个employee类要用到Address类

        <bean name="employee" class="xx.xx.Employee">

          <property name="homeAddress" ref="address"/>   <!--  这个address就是那个Address类的bean的name  -->

          <property name="firstName" value="Junior"/>  

        </bean>

      构造器的方法注入,其实就是想构造器传参的时候传一个ref也就是一个现成的bean

  • 相关阅读:
    HUE配置文件hue.ini 的impala模块详解(图文详解)(分HA集群)
    poj 1815 Friendship (最小割+拆点+枚举)
    Android项目中包名的改动
    Android MediaPlayer Error -1004
    hive原生和复合类型的数据载入和使用
    Linux学习笔记之权限与命令之间的关系(重要)及文件与文件夹知识总结
    kafka集群搭建与apiclient创建
    Android中各种Adapter的使用方法
    【从零学习Python】Ubuntu14.10下Python开发环境配置
    leetcode
  • 原文地址:https://www.cnblogs.com/wangshen31/p/8457689.html
Copyright © 2020-2023  润新知