使用spring进行bean装配

上一篇中演示了在构造对象时,使用new一个接口的实现类实现构造注入。这样做目前还没有明显的不足,但是如果开发过企业级应用就知道,这样做,系统将越来越难以维护。

这里,我演示使用spring进行进行bean的装配。

1.编写一些基础类

package com.amber.ivy.spring;


/**
 * 古典音乐家类
 * @author ivyamber
 *
 */
public class DIClassicMusicSinger implements DISinger
{
public void sing()
{
System.out.println("我是古典音乐家,我唱古典音乐");
}
}

package com.amber.ivy.spring;


/**
 * 流行音乐家类
 * @author ivyamber
 *
 */
public class DIPopMusicSinger implements DISinger
{
public void sing()
{
System.out.println("我是流行歌手,我唱流行音乐");
}
}

package com.amber.ivy.spring;


/**
 * 音乐家类,所有类型的音乐家都要实现这个类
 * @author ivyamber
 *
 */
public interface DISinger
{
void sing();
}


package com.amber.ivy.spring;


/**
 * mp3播放器
 * @author ivyamber
 *
 */
public class DIMp3
{
private DISinger singer;//使用接口而不是用具体的实现
public DIMp3(DISinger singer)
{
this.singer = singer;
}
public void play()
{
singer.sing();
}
}
可以发现所有的基础类都没有任何变化。

2.编写spring配置文件

<?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-3.0.xsd">
  <bean id="mp3" class="com.amber.ivy.spring.DIMp3">
  <constructor-arg ref="singer"/>
  </bean>
  <bean id="singer" class="com.amber.ivy.spring.DIPopMusicSinger"/>
</beans>
这就是最简单的一个spring配置文件,目前不对里面的具体编写做介绍。说面两点
bean标签表示构造一个class指定的类
bean的字标签标识构造这个类接受的一些参数。例如 <constructor-arg ref="singer"/>标识构造DIMp3时向构造函数中传入一个参数。

3.代码与spring配置文件结合


package com.amber.ivy.spring;


import org.omg.CORBA.portable.ApplicationException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;


/**
 * 低耦合代码示例
 * @author ivyamber
 *
 */
public class DI {


public static void main(String[] args) {
//spring通过应用上下文装载bean的定义并组装
//使用spring实现的ClassPathXmlApplicationContext加载配置文件
ApplicationContext context = new ClassPathXmlApplicationContext("singer.xml");

//从应用上下文中获取bean
DIMp3 mp3 = (DIMp3) context.getBean("mp3");
mp3.play();
}
}

通过ClassPathXmlApplicationContext加载之前定义的配置文件
再勾过context的getBean方法获得spring框架装配的bean

一个简单的springDI例子就完成了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值