02-spring框架—— IoC 控制反转

  控制反转(IoC,Inversion of Control),是一个概念,是一种思想。指将传统上由程序代
码直接操控的对象调用权交给容器,通过容器来实现对象的装配和管理。

  控制反转就是对对象控制权的转移,从程序代码本身反转到了外部容器。

通过容器实现对象的创建,属性赋值,依赖的管理。

  IoC 是一个概念,是一种思想,其实现方式多种多样。当前比较流行的实现方式是依赖
注入。应用广泛。

  依赖:classA 类中含有 classB 的实例,在 classA 中调用 classB 的方法完成功能,即 classA
对 classB 有依赖。

Ioc 的实现:
➢ 依赖查找:DL( Dependency Lookup ),容器提供回调接口和上下文环境给组件。
➢ 依赖注入:DI(Dependency Injection),程序代码不做定位查询,这些工作由容器自行
完成。

  依赖注入 DI 是指程序运行过程中,若需要调用另一个对象协助时,无须在代码中创建
被调用者,而是依赖于外部容器,由外部容器创建后传递给程序。

  Spring 的依赖注入对调用者与被调用者几乎没有任何要求,完全支持对象之间依赖关系
的管理。

  Spring  框架使用依赖注入(DI )实现 IoC 。

  Spring 容器是一个超级大工厂,负责创建、管理所有的 Java 对象,这些 Java 对象被称
为 Bean。Spring 容器管理着容器中 Bean 之间的依赖关系,Spring 使用“依赖注入”的方式
来管理 Bean 之间的依赖关系。使用 IoC 实现对象之间的解耦和。

2.1  开发工具准备

开发工具:idea2017 以上
依赖管理:maven

需要置 设置 maven  本机仓库:

2.2 Spring  的第一个

举例:01-primay

2.2.1  创建 maven 

quickstart模板

2.2.2  引入 maven  依赖 pom.xml

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-context</artifactId>
  <version>4.3.16.RELEASE</version>
</dependency>
<!--插件-->
<plugins>
  <plugin>
     <artifactId>maven-compiler-plugin</artifactId>
     <version>3.1</version>
     <configuration>
       <source>1.8</source>
       <target>1.8</target>
     </configuration>
  </plugin>
</plugins>

2.2.3  定义接口与实体类

public interface SomeService {
  void doSome();
}
public class SomeServiceImpl implements SomeService {
  public SomeServiceImpl() {
    super();
    System.out.println("SomeServiceImpl无参数构造方法");
  }
  @Override
  public void doSome() {
    System.out.println("====业务方法doSome()===");
  }
}

 2.2.4  创建 Spring 

  在 src/main/resources/目录现创建一个 xml 文件,文件名可以随意,但 Spring 建议的名
称为 applicationContext.xml。

  spring 配置中需要加入约束文件才能正常使用,约束文件是 xsd 扩展名。

  使用约束文件的语法在:xsd-configuration.html。这个 xsd-configuration.html 文件位置是
在%SPRING_HOME%\docs\spring-framework-reference\html\xsd-configuration.html

  SPRING_HOME:是从 spring 官网下载的资源 spring-framework-4.3.16.RELEASE-dist.zip 解
压后的目录。

  注意,Spring 配置文件中使用的约束文件为 xsd 文件。若 Eclipse 中没有自动提示功能,
则需要将约束要查找的域名地址指向本地的 xsd 文件。相应的 xsd 文件在 Spring 框架解压目
录下的 schema 目录的相应子目录中。

  约束文件:xsd(xml schema definition) xml 文档结构定义。

  作用:验证 xml 文档的逻辑结构是否正确。
  1.定义一个 xml 文档中都有什么元素
  2.定义一个 xml 文档中都有什么属性
  3.定义一个 xml 文档中元素可以有哪些子元素,以及元素的顺序。
  4.定义一个 xml 文档中元素和属性的数据类型。

  这里需要的是 spring-beans.xsd 约束文件,故需要在 beans 子目录中查找相应版本
的约束文件。

<bean />:用于定义一个实例对象。一个实例对应一个 bean 元素。
id:该属性是 Bean 实例的唯一标识,程序通过 id 属性访问 Bean,Bean 与 Bean 间的依
赖关系也是通过 id 属性关联的。

2.2.5 定义测试类

@Test
    public void test01(){
        System.out.println( "Hello Spring!" );
        //定义Spring的配置文件, 配置文件是在类路径的根目录之下
        String config = "applicationContext.xml";

        //创建Spring的容器对象.根据Spring配置文件的位置,使用接口的不同实现类
        //如果Spring的配置文件是在类路径(classpath),使用ClassPathXmlApplicationContext
        ApplicationContext ctx = new ClassPathXmlApplicationContext(config);

        //从容器中获取对象 使用getBean("<bean>的id")
        SomeService service = (SomeService) ctx.getBean("someService");

        //调用业务方法
        service.doSome();
    }

2.2.6  使用 spring  创建 非自定义类对象

spring 配置文件加入 java.util.Date 定义:
<bean id="myDate" class="java.util.Date" />

MyTest 测试类中:
调用 getBean(“myDate”); 获取日期类对象。

2.2.7  容器接口和实现类

ApplicationContext  接口 (容器)

ApplicationContext 用于加载 Spring 的配置文件,在程序中充当“容器”的角色。其实现
类有两个。

猜你喜欢

转载自www.cnblogs.com/Tpf386/p/10988696.html