SpringFramework(简称Spring)是J2EE应用程序框架,不过,更严格的讲它是针对Bean的生命周期进行管理的轻量级容器(Lightweight container),可以单独利用Spring构筑应用程序,也可以和Struts,Webwork等众多Web应用程序框架组合使用,并且可以与Swing等桌面应用程序API组合。所以Spring并不仅仅只能应用在J2EE中,也可以应用在桌面应用及小应用程序中。针对Spring开发的组件不需要任何外部库。
Spring是一个轻量级的IoC和AOP容器框架。
Spring框架用7个模块组成
package com.zd.dao;
public interface ServiceDao {
void sayHello();
}
package com.zd.dao;
public class ServiceDaoimpl implements ServiceDao {
private String say;
@Override
public void sayHello() {
System.out.println("我想说的是:"+say);
}
public void setSay(String say) {
this.say = say;
}
}
<?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-2.0.xsd"
>
<bean id="servicedao" class="com.zd.dao.ServiceDaoimpl">
<property name="say" value="你好!"/>
</bean>
</beans>
解析:bean标签中,id属性为所指java类的别名,class属性为指定的Java类的路径。
property标签中,name属性为在指定Java类中定义的变量名称,value属性为变量的值。
注意:Spring的配置文件名字与Struts、Hibernate等框架的配置有所区别,Spring配置文件名字可以更改,而后两者不可更改。
4、编写测试类TestSpring,代码如下:
public class TestSpring {
@Test
public void test1(){
/**加载Spring容器,可以解析多个配置文件,采用输入数组方式传递ClassPathXmlApplicationContext(new String[]{"applicationContext.xml"})*/
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
/**通过xml文件解析bean文件,getBean()方法中的参数为在xml文件中指定的java类的id值*/
ServiceDaoimpl sd = (ServiceDaoimpl)ac.getBean("servicedao");
sd.sayHello();
}
}
运行结果:
我想说的是:你好!
案例2:应用简单的spring框架:
此案例还需案例1所有代码,需要在案例1中做出以下修改:
1、创建接口SpringService,代码如下:
package com.zd.service; public interface SpringService { void say(); }
2、创建接口实现类SpringServiceImpl,代码如下:
package com.zd.service; import com.zd.dao.ServiceDaoimpl; public class SpringServiceImpl implements SpringService { /**这里引用案例1中的Java类*/ private ServiceDaoimpl serviceDaoImpl; @Override public void say() { serviceDaoImpl.sayHello(); } public void setServiceDaoImpl(ServiceDaoimpl serviceDaoImpl) { this.serviceDaoImpl = serviceDaoImpl; } }
解析:这里引用案例1中的java类,并且也同样要为其加入set方法。
3、修改案例1中配置文件 applicationContext.xml,代码如下:
<?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-2.0.xsd" > <bean id="servicedao" class="com.zd.dao.ServiceDaoimpl"> <property name="say" value="你好!"/> </bean> <bean id="springServiceImpl" class="com.zd.service.SpringServiceImpl"> <property name="serviceDaoImpl" ref="servicedao"/> </bean> </beans>
解析:此时的配置文件中,新加入了一个bean标签,因为在SpringServiceImpl中引入了案例1中的类,所以property标签的class属性变为ref属性,其值为servicedao(案例1中ServiceDaoimpl类的id值)。
注意:ref属性中的值必须和需要引用的类的id值一样。
4、创建测试类TestSpring,代码如下:
public class TestSpring { @Test public void test2(){ /**加载spring容器,这里同样可以使用数组加载多个配置文件*/ ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); SpringServiceImpl ssi = (SpringServiceImpl) ac.getBean("springServiceImpl"); ssi.say(); }
运行结果:
我想说的是:你好!
----------------------------------------------------------------
以上属个人理解,若有不足,请各位高手指点,谢谢..