Spring之IOC入门

一、IOC基本介绍

IoC : Inversion of Control (控制反转), 其本意就是将原本在程序中手动创建对象的控制权,交给Spring来管理;

在这里插入图片描述

1、在没有IoC之前,我们的操作是: 若调用者需要使用某个对象,其自身就得负责该对象及该对象所依赖对象的创建和组装;

在这里插入图片描述

2、有IoC之后,调用者只管负责从Spring容器中获取需要使用的对象,不关心对象的创建过程,也不关心该对象依赖对象的创建以及依赖关系的组装; 也就是把创建对象的控制权反转给了Spring框架。

在这里插入图片描述

二、IOC入门案例

Spring的IoC操作分为:IoC配置文件方式和IoC的注解方式(常用)。这里使用配置文件方式来做入门案例

使用Spring调用一个User对象具体步骤如下:

  • 1、导包(IDEA自带)
  • 2、写一个POJO类
  • 3、写配置文件(默认根目录是src)
  • 4、创建一个Spring IOC容器对象
  • 5、从IOC中获取一个Bean实例
  • 6、使用该实例

1、创建一个实体类

//User.java
public class User {
    public void add() {
        System.out.println("User Add Method.");
    }

    @Override
    public String toString() {
        return "This is a user object.";
    }
}

2、创建Spring的配置文件,进行Bean的配置

这里为了方便,将核心配置文件放在src目录下,并命名为 applicationContext.xml,内容如下:

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

    <bean id="user" class="demo1.User"></bean>
</beans>

元素属性说明:

  • bean元素:使用该元素描述需要spring容器管理对象
  • name属性:给被管理的对象起个名字,获得对象时getBean(“name值”)
  • class属性:被管理对象的完整类名
  • id属性:与name属性一模一样,名称不可重复,不能使用特殊字符

注: Spring的核心配置文件名称和位置不是固定的。但官方件建议将该核心配置文件放在src目录下,且命名为 applicationContext.xml。

3、编写测试类进行测试,通过配置文件创建类对象

public class TestUser {
    public static void main(String[] args) {
        //创建一个Spring IOC容器对象
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        //从IOC中获取一个Bean实例   这里需要转换类型(返回默认都是object类型)
        User u = (User)context.getBean("user");
        //使用该实例
        System.out.println(u);
        //调用该实例内部的属性或方法
        u.add();
    }
}

注:

  • BeanFactory: Spring最底层的接口, 只提供了IoC的功能, 负责创建、组装、管理bean,所以一般不适用BeanFactory, 推荐使用ApplicationContext(应用上下文)

  • ApplicationContext : ApplicationContext接口继承了BeanFactory, 还提供了AOP继承、国际化处理、事件传播、统一资源价值等功能; 可以查看该接口的继承体系;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章