sping学习

Spring是于2003 年兴起的一个轻量级的Java 开发框架,是一个开源的控制反转(Inversion of Control ,IoC)和面向切面(AOP)的容器框架.它的主要目得是简化企业开发 源码连接下载:测试源码

  1. 为了学习sping框架知识,首先创建一个maven项目,用来做测试用(注意:webapp项目;使用默认目录;创建一个目录结构为src/main/java作为java代码的存放,并且其中的输出目录与resource一致; 导入sping两个核心包  beans和core包 导入这两个之后会自动下载日志依赖包com.springsource.org.apache.commons.logging-1.1)。
  2. 第二步测试 首先先在application添加下面两个标签,其中在做解析时会报如下错误。(无法定位到xml命名空间,所以需要引入context类)

package come.beichende.test;

import java.lang.reflect.Field;
import java.lang.reflect.Method;

import org.junit.Test;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;

import come.beichende.pojo.Student;

public class TestSping {
	
	@Test
	public void testSping(){//beanfactory 默认使用的是直接延迟加载,调用的时候才会去加载
		//创建sping容器
		Resource iResource = new ClassPathResource("applicationContext.xml");
		BeanFactory iBeanFactory = new XmlBeanFactory(iResource);
		//取出对象
		Student stu = (Student) iBeanFactory.getBean("studentPojo");
		stu.stuFun();
	}
	//模拟spring创建对象  反射
	@Test
	public void moNiSping() throws Exception{
		Class<?> cl = Class.forName("applicationContext.xml");
		Object obj = cl.newInstance();
		Field[] fidlds =  cl.getFields();//取得反射对象的所有属性
		for (Field field : fidlds) {
			//如果该参数有如下两个参数,则给对应的参数调用set方法,实现注入
			if( field.getName().equals("name")){
				Method setName = cl.getDeclaredMethod("setName", null);
				setName.invoke(obj, null);
			}
			if(field.equals("age")){
				Method setName = cl.getDeclaredMethod("setAge", null);
				setName.invoke(obj, null);
			}
		}
		Student stu = (Student)obj;
		stu.stuFun();
	}
	@Test
	public void testFactory(){//beanfactory 默认使用的是直接延迟加载,调用的时候才会去加载  桌面应用建议
		//创建sping容器
		Resource iResource = new ClassPathResource("applicationContext.xml");
		BeanFactory iBeanFactory = new XmlBeanFactory(iResource);
	}
	@Test
	public void testApplication(){//applicationContext接口 默认使用的是直接加载,所以在加载的时候会加载全部的bean  web应用建议
		//创建sping容器
		ApplicationContext application = new ClassPathXmlApplicationContext("applicationContext.xml");
	}
	
}

	
	
	

控制反转Ioc:Student是在应用内部创建及维护的,所谓控制反转就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的,这样控制权就由应用转移到了外部容器,控制权的转移就是所谓反转,不是技术而是一种思想。(将对象的创建全反转到spring容器)

依赖注入Di:在运行期,由外部容器动态地将依赖对象注入到组件中(在对象创建的过程中,将对象的依赖属性通过配置注入)。

猜你喜欢

转载自blog.csdn.net/qq_40826106/article/details/87358508