程序员人生 网站导航

Java Web学习(26)---Spring之初步建立工程与理解DI(依赖注入)

栏目:互联网时间:2017-02-13 08:13:00

首先我们介绍1下Spring核心开发包及其基本用处:

Spring核心开发包的基本用处
 Spring Core:包括Spring框架基本的核心工具类,Spring其他组件都要使用这个包里边的类,也能够在自己的利用系统里边使用这些工具类。
  Spring Beans:所有利用都要用到,包括了访问配置文件,创建和管理Bean,控制反转和依赖注入的所有类。
  Spring AOP:包括了使用AOP特性时候的所有类。
  Spring Context:为Spring核心提供了大量扩大,能够找到JNDI等使用时的全部类。


  下面我们创建1个实例,将HelloWorld和HelloChina类分别扩大自同1个接口,接着分别实现sayHello方法,将这两个类分别注入到Person类中,在Person类中调用sayHello方法,最后再建立1个Main类,通过Main类来进行全部程序的运行。

注意:我们在配置Spring的时候,需要再单独下载commons-logging进行同时配置Jar文件,否则项目没法运行。

全部程序的结构是这样的:


下面给出IHelloMessage代码:

package com.nofaker.spring.chapter01;


public interface IHelloMessage {
	
	public String sayHello();
}

然后再将HelloWorld和HelloChina分别继承自这个接口:

package com.nofaker.spring.chapter01;

public class HelloChina implements IHelloMessage {

	@Override
	public String sayHello() {
		return "大家好";
	}

}
package com.nofaker.spring.chapter01;

public class HelloWorld implements IHelloMessage {

	@Override
	public String sayHello() {
		return "Hello World!";
	}

}
下面我们建立Person类:

package com.nofaker.spring.chapter01;

public class Person {
	private IHelloMessage helloMessage;

	public IHelloMessage getHelloMessage() {
		return helloMessage;
	}

	public void setHelloMessage(IHelloMessage helloMessage) {
		this.helloMessage = helloMessage;
	}
	public String sayHello() {
		return this.helloMessage.sayHello();
	}
}
最后实现Main类:

package com.nofaker.spring.chapter01;

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

public class Main {

	public static void main(String[] args) {
		Resource r = new FileSystemResource("helloMessage.xml");
		//通过FileSystemResource获得xml配置文件
		BeanFactory f = new XmlBeanFactory(r);
		//加载配置文件,启动IOC容器
		Person person = (Person)f.getBean("person");
		//通过IOC容器获得Person类实例
		String s = person.sayHello();
		//通过Person类获得输出信息
		System.out.println(s);
	}
}
Main类里边的main方法是全部程序的入口。

下面我们编写配置文件helloMessage.xml:

DOCTYPE 用于告知程序中使用那种规范来解析配置文件
id属性是BeanFactory中的唯1标识,代码中BeanFactory通过这个id来索引获得(getBean方法)相应的JavaBean实例。
<beans>....</beans>是根节点,里边包括了1些bean节点(即为JavaBean),通过properity属性将1个类注入到这个类里边。

<?xml version="1.0" encoding="UTF⑻"?>
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN"
  "http://www.springframework.org/dtd/spring-beans.dtd">
<beans> 
	<bean id="helloWorld" class="com.nofaker.spring.chapter01.HelloWorld"></bean>
	<bean id="helloChina" class="com.nofaker.spring.chapter01.HelloChina"></bean>
	<bean id="person" class="com.nofaker.spring.chapter01.Person">
		<property name="helloMessage" ref="helloChina"/>
	</bean>
</beans>
通过修改ref的值,即可以将不同的类注入到person类中。

最后我们在Main.java中右击选择Run As->Java Application,不同的注入可以得到不同的结果:






------分隔线----------------------------
------分隔线----------------------------

最新技术推荐