Spring基础实例(依赖注入和控制反转)

编程技术  /  houtizong 发布于 3年前   78

前提条件:在http://www.springsource.org/download网站上下载Spring框架,并将spring.jar、log4j-1.2.15.jar、commons-logging.jar加载至工程
1.武器接口

package com.bijian.spring.base3;public interface Weapon {       void killEnemy();}

 

2.武器实现类枪

package com.bijian.spring.base3;public class HandGun implements Weapon {       public void killEnemy() {        System.out.println("枪杀敌");    }}

 

3.士兵类

package com.bijian.spring.base3;public class Soldier {    private Weapon weapon;       public void setWeapon(Weapon weapon) {        this.weapon = weapon;    }       public void fight() {        weapon.killEnemy();    }}

 

4.applicationContext3.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>  <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"  "http://www.springframework.org/dtd/spring-beans.dtd"><beans>    <bean id="s1" class="com.bijian.spring.base3.Soldier">        <property name="weapon">            <ref bean="handgun"></ref>        </property>    </bean>    <bean id="handgun" class="com.bijian.spring.base3.HandGun"></bean></beans>

 

5.测试类

package com.bijian.spring.base3;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class Test {    public static void main(String[] args) {        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext3.xml");        Soldier s1 = (Soldier)context.getBean("s1");        s1.fight();    }}

 

        运行结果:枪杀敌

       

        这里使用Spring解决了HandGun和Soldier的耦合问题。Soldier类中再也看不到HandGun的踪影了,Soldier只依赖于接口,而最终Soldier还是使用了HandGun。Sping在这里管理了单个的对象,也管理了对象之间即Soldier和HandGun的依赖关系。原本是由Soldier控制HandGun的实例化的,转变为由Spring容器来控制,这里发生了控制权的转移,这就是控制反转(Inversion of Control,管称IOC)。当Soldier需要HandGun时,Spring会自动将HandGun对象注入给Soldier,这就是依赖注入。

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

留言需要登陆哦

技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成

网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];

      订阅博客周刊 去订阅

文章归档

文章标签

友情链接

Auther ·HouTiZong
侯体宗的博客
© 2020 zongscan.com
版权所有ICP证 : 粤ICP备20027696号
PHP交流群 也可以扫右边的二维码
侯体宗的博客