Spring IoC实现

IoC即控制反转,简单说就是由容器控制程序之间的关系,而非传统中的由代码直接控制。控制权由应用代码转到了外部容器,控制权的转移即为反转。IoC也称为依赖注入,即由容器动态的将某种依赖关系注入到组件中。

在开发过程中,我们常常遇到一个类中调用另一个类的情况,传统的做法是在使用者内部创建一个被调用类的对象,即new Object()的方式,这样对象始终和其他的类或者接口耦合。

IoC如何做呢?类似于我们通过中介租房,在我们和房东之间引入第三者:房产中介(容器)。房产中介有很多房屋信息,我们可以向房产中介提出一个列表,告之需要的房屋信息,比如一室一厅,价格500元以内,房东要为女性等。然后房产中介按照我们要求提供一个房东,我们只需要和房东谈租房问题了。如果房屋中介给我们找的房东不符合要求,我们就抛出异常。整个过程由房产中介这样一个容器来控制。

Spring的开发方式如上所述,所有的类都会在Spring容器中登记,告诉Spring你是什么,你需要什么,然后Spring会在系统运行到适当的时候,把你要的东西主动交给你,同时也把你交给其他需要你的东西。所有的类的创建、销毁都由Spring来控制,也就是说控制对象生存周期内不再是引用它的对象,而是Spring。对应某个具体的对象而言,以前他控制其他对象,现在所有对象被Spring控制。

1、 创建一个类UserBean.java。该类将被另一个类所调用。

package com.bean;

 

public class UserBean {

    private String username;

    private int userage;

    public String getUsername() {

       return username;

    }

    public void setUsername(String username) {

       this.username = username;

    }

    public int getUserage() {

       return userage;

    }

    public void setUserage(int userage) {

       this.userage = userage;

    }

}

2、 创建一个服务接口UserService.java

package com.service;

 

public interface UserService {

    public void addUser();

}

3、 创建接口的实现UserServiceImpl.java。该类引用UserBean.java

package com.service.impl;

 

import com.bean.UserBean;

import com.service.UserService;

 

public class UserServiceImpl implements UserService {

 

    private UserBean user;

    private int num;

      

    public int getNum() {

       return num;

    }

 

    public void setNum(int num) {

       this.num = num;

    }

 

    public UserBean getUser() {

       return user;

    }

 

    public void setUser(UserBean user) {

       this.user = user;

    }

 

    public void addUser() {

       System.out.println("添加第"+this.getNum()+"个用户:");

       System.out.println("添加的用户姓名"+user.getUsername());

       System.out.println("添加的用户年龄"+user.getUserage());

    }

 

}

4、 编写配置文件applicationContext.xml.

<beans xmlns="http://www.springframework.org/schema/beans"

  xmlns:security="http://www.springframework.org/schema/security"

  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-3.0.xsd

          http://www.springframework.org/schema/security

          http://www.springframework.org/schema/security/spring-security-3.0.xsd">

    <!-- 配置UserBean -->

    <bean id="userbean" class="com.bean.UserBean">

    <property name="username" value="laopeng" />

    <property name="userage" value="27" />

    </bean>

    <bean id="userService" class="com.service.impl.UserServiceImpl">

    <property name="num" value="1" />

    <!-- 该处userUserServiceImpl中的属性 -->

    <property name="user">

        <!-- userbean与前面配置的UserBean里的id一致 -->

        <ref bean="userbean"/>

    </property>

    </bean>

</beans>

5、 编写测试文件Test.java

package com.test;

 

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

 

import com.service.UserService;

 

public class Test {

    public static void main(String[] args) {

       ApplicationContext context = null;

        context = new ClassPathXmlApplicationContext("applicationContext.xml");

UserService userService = (UserService)context.getBean("userService");

       userService.addUser();

    }

}

6、 运行结果:

添加第1个用户:

添加的用户姓名laopeng

添加的用户年龄27

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值