SpringIoC容器学习

一,概念描述

Spring IoC 读作为 反转控制 基本意思是将原本在程序中手动创建对象的控制权,交给Spring框架管理。

没有Spring时候属于正控:正如那个时候,我们需要使用某个对象,我们必须手动给对象实例创建或者组装对象之间的依赖关系。

在出现Spring时候属于反转控制:这时候,我们需要使用某个对象,调用者只管负责从Spring容器中获取使用该对象,根本不需要关心创建对象的过程,也不需要依赖对象的创建和组装,最终可以理解为把创建对象和组装对象关系的控制权力交给Spring框架。

正控和反控的对比:

简单解释一下上述图片的含义:

在使用IoC前,我们需要使用对象,必须自己创建,什么事情都得自己做,就如左边图片一样的情景。

在使用IoC后,我们需要使用对象实例,调用者只管跟Spring IOC容器获取,无需关系他创建的过程,就好比右边图片的情景。

二,Spring IoC应用实例

  1. 先在Ecplice工具上创建一个Java项目,创建lib目录导入Spring所需的jar包依赖,创建DAO层和、和Service层
    jar包依赖:

  2. //DAO接口
    package com.iarchie.ioc.dao;
    
    public interface TestDAO {
    	void empMsg(String name);
    }
    3//DAO实现类
    package com.iarchie.ioc.dao.impl;
    import com.iarchie.ioc.dao.TestDAO;
    
    public class TestDAOImpl implements TestDAO {
    	@Override
    	public void empMsg(String name) {
    		System.out.println("sayHello,Employee="+name);
    	}
    }
    
    1. //Service 接口
      package com.iarchie.ioc.service;
      
      public interface TestService {
      	void empMsg();
      }
      
      //Service 实现
      package com.iarchie.ioc.service.impl;
      
      import com.iarchie.ioc.dao.TestDAO;
      import com.iarchie.ioc.service.TestService;
      
      public class TestServiceImpl implements TestService {
      
      	private TestDAO testDAO;
          //用于Setter属性注入
      	public void setTestDAO(TestDAO testDAO) {
      		System.out.println("setter方法执行....");
      		this.testDAO = testDAO;
      	}
          
      	public TestServiceImpl() {
      	}
          //用户构造器注入
      	public TestServiceImpl(TestDAO testDAO) {
      		System.out.println("构造器执行....");
      		this.testDAO = testDAO;
      	}
      	@Override
      	public void empMsg() {
      		testDAO.empMsg("Lucy");
      	}
      
      }
      
    2. 编写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">
      	
      	<!-- 配置DAO -->
      	<bean id="testDAO" class="com.iarchie.ioc.dao.impl.TestDAOImpl"/>
      
      	<!-- 配置Service -->
      	<bean id="testService" class="com.iarchie.ioc.service.impl.TestServiceImpl">
      	
          <!--通过setTestDAO注入 DAO属性-->
      	<property name="testDAO" ref="testDAO"></property>
      	<!-- 构造器注入 -->
      	<!-- <constructor-arg index="0" ref="testDAO"/> -->
      	</bean>
      </beans>
      

      5.编写测试

      package com.iarchie.ioc;
      import org.junit.Test;
      import org.junit.runner.RunWith;
      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.test.context.ContextConfiguration;
      import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
      
      import com.iarchie.ioc.service.TestService;
      
      @RunWith(SpringJUnit4ClassRunner.class)
      //上下文配置对象(寻找配置文件的)
      @ContextConfiguration("classpath:applicationContext.xml")
      public class AppTest {
      
      	@Autowired
      	private TestService testService;
      
      	@Test
      	public void test() {
      		testService.empMsg();
      	}
      }
      

      出现如下结果,表示IOC应用程序开发完成
      setter方法执行…
      sayHello,Employee=Lucy

总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Coding工匠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值