spring的IOC、DI思想

spring(day01)

1、IOC容器(IOC思想)

IOC:也就是反转控制

传统获取资源的方式:
例如做饭:买菜、洗菜、择菜、切菜、炒菜,必须对整个做饭的过程熟悉,获取资源是主动从容器中获取所需要的资源

反转控制方式:
点外卖,只需要吃,不需要关心具体饭是怎么做的
反转控制思想变成了容器主动将资源推送给组件,不需要关系容器中如何创建对象,只需要被动接受资源即可

2、DI思想

DI:依赖注入

DI是IOC思想的体现方式,也就是组件以提前定义好的方式被动接受来自容器中的资源注入,经典三层架构:controller、service、dao层,传统方式是controller中创建service层对象,而DI则是通过controller中直接注入service对象或者说是controller中创建service的成员变量,通过set方法或者有参构造器直接将对象赋值给成员变量。

3、IOC容器在Spring中的实现

IOC容器中管理的组件也叫bean,创建bean之前需要创建IOC容器。

(1)BeanFactory

IOC容器的基本实现,Spring内部使用,不提供开发使用

(2)ApplicationContext
BeanFactory子接口,用的多
(3)ApplicationContext的一些实现类

类型名简介
ClassPathXmlApplicationContext通过读取类路径下的xml文件创建IOC容器
FileSystemXmlApplicationContext通过文件系统路径读取XML文件创建IOC容器
ConfigurableApplicationContextApplicationContext的子接口,包含扩展方法refresh()和close(),让ApplicationContext有启动、关闭、刷新上下文能力
WebApplicationContext专门为 Web 应用准备,基于 Web 环境创建 IOC 容器对象,并将对象引入存入 ServletContext 域中

4、spring入门案例

1、首先在com.xinkai.spring.pojo包下创建一个实体类

package com.xinkai.spring.pojo;

public class HelloWorld {
    public void sayHello(){
        System.out.println("hello spring");
    }
}

2、在resources中创建配置文件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">
<!--
    id是唯一标识不能重复,class是类的路径,对应类型
    bean:配置一个bean对象,将对象交给IOC容器
-->
    <bean id="helloworld" class="com.xinkai.spring.pojo.HelloWorld"></bean>
</beans>

解释:
bean代表ioc容器中一个组件,id是唯一标识不能重复,class是对应实体类的全路径

3、创建一个测试类

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class HelloWorldTest {
    @Test
    public void test(){
        // 类路径:ClassPathXmlApplicationContext,    resource和java目录被加载到类路径中
        ApplicationContext ioc = new ClassPathXmlApplicationContext("applicationContext.xml");
        HelloWorld helloworld = (HelloWorld) ioc.getBean("helloworld");
        helloworld.sayHello();
    }
}

解释:首先根据xml配置文件获取到ioc容器,然后通过ioc.getBean("helloworld")根据id获取到该对象,直接调用对象的方法sayHello输出内容:hello spring
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值