使用spring进行依赖注入

说起框架我们不得不想到spring,这个框架的特点可以简单概括为“依赖注入,控制反转”,注入就不用多说了,控制反转则可以理解为权利的转移。spring是一个与服务器无关的框架,但是有的人把spring复杂化了,扯出了什么weblogic,jboss。其实学习spring给本就不需要什么服务器(除了做项目的整合开发),只需要有一定的java基础知识就足够了。spring比起hibernate要简单许多的,spring是针对接口编程。这一点在开发中用的比较多。至于开发包大家可以自己去网上找资料,把所有的jar包加入lib里面就OK了。写spring的时候最重要的就是看懂spring的配置文件。配置文件我个人觉得还是自己手动写比较好,这样可以帮助我们更好的理解spring的工作原理。这里我就先写一个spring程序帮助大家理解。

spring的配置文件一般放在src下面,但是也可以放其他地方,这个就根据需要来配置就可以。怎么知道spring配置文件的写法呢,我这里下载的是spring2.5的开发包,目前这个用的还是比较多的。在开发包里找到docs\reference我们可以看到里面的参考文档,里面就有讲到这些配置,如图所示。

我们可以自己写个xml文件,把这些配置复制进去,之后就来写一下类和接口。

package org.lxh.dao;

public interface PersonDAO {

	public abstract void say();

}



package org.lxh.dao;

public interface ResourceDAO {

	public abstract void resource();

}


package org.lxh.dao;

public interface Service {

	public abstract void zhuru();

}


下面就来写几个类实现上面这些接口

 

package org.lxh.imp;

import org.lxh.dao.Construct;

public class ConstructService implements Construct {

	public void construct() {
		System.out.println("通过构造器注入");
	}
}


package org.lxh.imp;

import org.lxh.dao.Service;

public class PersonService2 implements Service {
	
	public void zhuru()
	{
		System.out.println("我被注入了");
	}
  
}


package org.lxh.imp;

import org.lxh.dao.ResourceDAO;

public class ResourceService implements ResourceDAO  {
	
	public void resource()
	{
		 System.out.println("通过注解注入");
	}
  
}


package org.lxh.imp;

import org.lxh.dao.ResourceDAO;

public class ResourceService implements ResourceDAO  {
	
	public void resource()
	{
		 System.out.println("通过注解注入");
	}
  
}



在这里写配置文件就要注意了,因为使用到了注解,所以要引入一下内容。
xmlns:context="
http://www.springframework.org/schema/context"

http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd

<context:annotation-config />

看一下配置文件,如下所示

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="
           http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-2.5.xsd
           ">
  
  <context:annotation-config />       
  <bean name="service" class="org.lxh.imp.PersonService2"/>
  <bean name="sdd" class="org.lxh.imp.ResourceService"/>
  <bean name="personService" class="org.lxh.imp.PersonService">
    <property name="service" ref="service"/>
    <constructor-arg>
      <bean class="org.lxh.imp.ConstructService"/>
    </constructor-arg>
  </bean>
  
</beans>


配置文件(bean.xml)写好了,下面就写一个测试类来测试一下

package org.lxh.unit;


import org.junit.BeforeClass;
import org.lxh.dao.PersonDAO;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test {

	@BeforeClass
	public static void setUpBeforeClass() throws Exception {
	}
    @org.junit.Test
    public void test()
    {
    	ApplicationContext context = new ClassPathXmlApplicationContext(
    	        new String[] {"beans.xml"});  //实例化spring容器
        PersonDAO dao=(PersonDAO)context.getBean("personService");  //查找bean
        dao.say();
        
    }
}


下面看一下运行效果图。

到这里程序就写好了,数据源或其他也可以使用这中方式注入,希望我写的能帮到大家,有问题给我写评论。源码在我上传的资源里,你们可以去下载。

 
 
 
 
 
 
 
 
 
 
 
 
 

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值