说起框架我们不得不想到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();
}
}
下面看一下运行效果图。
到这里程序就写好了,数据源或其他也可以使用这中方式注入,希望我写的能帮到大家,有问题给我写评论。源码在我上传的资源里,你们可以去下载。