Spring第一个程序

这几天都在学习怎么使用SSH,首先是从Spring开始的,一些程序代码都是参考《Java Web开发技术大全--JSP+Servlet+Struts+Hibernate+Spring+AJAX》这本书写的。

一.Spring的核心技术

1.反向控制(Inversion of Control,Ioc)和依赖注入

任何有应用价值的系统都至少有两个类来互相配合工作,通过由一个主要的入口类来启动程序,然后在这个类中创建另一个类的对象实例,并进行相应的操作。这种工作方式是由调用者主动创建的对象实例,是主动的工作方式。

而如果使用Ioc,创建对象的任务并不是由调用者来完成的,而是通过外部的协调者(在Spring中是Spring Ioc容器)来完成的。因此也可以认为调用者要依赖Spring Ioc容器来获得(或者称为注入)对象实例,所以也可以将Ioc称为依赖注入。

2.面向方面编程(AOP)

二.实例

手动创建的Java Project是不带Spring功能的,需要我们通过手动设置来完成。具体操作是:myecplise->project capabilities->add spring capabilities。这样project下就有了一个applicationContext.xml文件。Spring就是通过配置该xml来实现其功能的。

Spring模式从简单来讲就是一个接口一个实现类,然后还有一个测试类。

我们这里创建一个接口HelloService,实现类HelloServiceImpl,测试类FirstSpring。

 

HelloService.java

package chapter22;

//创建一个HelloService接口,Spring框架中的接口类。
public interface HelloService {
	public String getGreeting();

} 

HelloServiceImpl.java

package chapter22;

//创建HelloService接口的实现类HelloServiceImpl,这个类中的属性将成为Bean被装配。
public class HelloServiceImpl implements HelloService {
	private String greeting;// JavaBean,HelloServiceImpl类的对象实例会通过

	// Spring的xml配置文件来建立
	public String getGreeting()// get方法
	{
		System.out.println("getGreeting()方法被调用");
		return greeting;
	}

	public void setGreeting(String greeting)// set方法
	{
		this.greeting = greeting;
		System.out.println("setGreeting()方法被调用");
	}
}
 

FirstSpring.java

package chapter22;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

//使用ApplicationContext配置JavaBean
public class FirstSpring {
	public static void main(String args[]) {
		// 方案一:使用Spring。
		ApplicationContext ctx = new FileSystemXmlApplicationContext(
				"src//applicationContext.xml");
		HelloService hello = (HelloService) ctx.getBean("helloservice");
		System.out.println(hello.getGreeting());
		// 方案二:不适用Spring。
		HelloServiceImpl hello2 = new HelloServiceImpl();
		hello2.setGreeting("Xu Wei");
		System.out.println(hello2.getGreeting());
		// 方案三:使用Spring,ClassPathXmlApplicationContext
		ApplicationContext ctx2 = new ClassPathXmlApplicationContext(
				"applicationContext.xml");
		HelloService hello3 = (HelloService) ctx2.getBean("helloservice");
		System.out.println(hello3.getGreeting());
		// 结论:
		// 方案一和方案二输出的结果是一样的,其实实现的本质也是一样的,
		// 唯一的区别就是建立HelloServiceImpl类实例对象的方法不一样。
		// 方案一时通过Spring的xml文件配置来得到,而方案二则是直接通过代码来建立。
		// FileSystemXmlApplicationContext:通过绝对或相对路径制定XML配置文件,并装载XML文件的配置信息。
		// ClassPathXmlApplicationContext:从类路径中搜索XML配置文件。可以使用FileSystemXmlApplicationContext类
		// 替换ClassPathXmlApplicationContext,但要将构造方法的参数值改为"applicationContext.xml"

	}
}
 

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" xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
	<bean id="helloservice" class="chapter22.HelloServiceImpl">
		<property name="greeting" value="Xu Wei"></property>
	</bean>


</beans> 

最后右键FirstSpring->run as->java application。第一个spring程序就完成了。

PS:手动配置JavaBean有两种方式,上面提到的都是应用上下文(ApplicationContext)来配置的,下面介绍使用BeanFactory来进行配置的方法。

HelloService.java和HelloServiceImpy.java都不需要改变,只需要改变测试类。

 

TeatBeanFactory.java

package chapter22;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.*;
import org.springframework.core.io.FileSystemResource;

//Bean工厂(BeanFactory)手动配置JavaBean。
public class TestBeanFactory {
	public static void main(String args[]) {
		BeanFactory factory = new XmlBeanFactory(new FileSystemResource(
				"src//applicationContext.xml"));
		HelloService hello = (HelloService) factory.getBean("helloservice");
		System.out.println(hello.getGreeting());
	}
	/*
	 * 单从装配Bean上看,ApplicationContext和BeanFactory类似,单ApplicationContext比BeanFactory提供了更多的功能
	 * ,如国际化,装载文件资源、向监听器Bean发送事件等。如此,如果要使用更多的功能,最好使用ApplicationContext来装配Bean
	 * 
	 * 装配Bean实际上就是在XML中配置文件JavaBean的相关信息,然后由Spring框架读取该配置文件,并创建相应的JavaBean对象实例
	 * 的过程。通常来讲,需要用手工的方式制定Spring装配JavaBean时的动作,如调用哪一个构造方法,初始化指定的JavaBean属性等。
	 */

}
 

你可能感兴趣的:(spring,xml,bean,String,IOC,import)