spring学习1

工程目录如下

要加入的jar文件有三个。

下面比较IoC与传统bean调用的不同。

接口类

package wen;

public interface Hello {
	public String world= null;
	public String setWords(String world) ;
	public void getWords();
}

接口实现类

package wen;

public class HelloImp implements Hello{
	private String wString ;
	
	public HelloImp(){
		System.out.println("我被容器自动调用");
	}
	
	@Override
	public String setWords(String world) {
		this.wString = world ;
		return wString;
	}

	@Override
	public void getWords() {
		System.out.println("第一个spring:"+wString);
	}

}

传统的bean调用

要先实例化一个对象 ,通过对象来使用这个类的方法。

package wen;

public class Test {
	public static void main(String [] args ){
		Hello hello = new HelloImp() ;
		hello.setWords("你好") ;
		hello.getWords(); 
	}
}

IoC容器实现 

在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="hello" class="wen.HelloImp">
	</bean>
</beans>

spring提供了很好的测试方法,可以了解配置的类是否在spring容器中实例化。

package wen;

import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;

public class HelloFactory {
	public static void main(String [] args){
		XmlBeanFactory bFactory = new XmlBeanFactory(
				new ClassPathResource("spring.xml")) ;
		Hello hello = (Hello)bFactory.getBean("hello") ;
		
		hello.setWords("你好") ;
		hello.getWords(); 
		bFactory.destroySingleton("hello");
	}
}

两者对比 

传统的方法:通过接口访问对象要实例化,这增加了代码之间的耦合度,调用时还要了解实现接口类中定义的方法,还不容易对生成的对象进行管理。

容器管理方式:当程序中用到这个对象的时候,依赖容器进行实例化,实现方法调用时,只要参考接口中的实现方法,还可以对对象进行管理,消除。

Spring可以用在任何java项目中,从一定程序上说,它是对jdk的扩展,也是相对独立的,可以当作是一个管理java类的容器。 

  

  

原文地址:https://www.cnblogs.com/chuiyuan/p/4599521.html