Spring学习笔记一(IOC思想)

  • 注:这是学习过程的记录,可能出错,仅供参考

spring简介

Spring是分层的Java SE/EE应用 full-stack轻量级开源框架,以IoC(Inverse Of Control:反转控制)和AOP(Aspect Oriented Programming:面向切面编程)为内核,为程序员提供了许多优秀的技术,简化了Javaee的开发,spring有许多优点:方便解耦,简化开发,支持AOP编程思想,支持声明式事务,集成了各种优秀的开源框架。
Spring学习笔记一(IOC思想)_第1张图片

spring的IOC思想

在以前的开发中,类与类之间都会有一定的联系,最简单的就是当一个类实现了一个接口,当我们需要这个类时就去创建它,但是如果有一天我们需要改变接口的实现类让其实现不同的方法时,我们就需要到源码中修改代码,有可能我们修改一点代码时会导致其他位置的代码也需要修改,牵一发而动全身,这样就说明程序的解耦度不高,但是spring的IOC思想帮我们解决了这个问题,IOC即控制反转,即以前是我们自己创建对象实例,但是现在对象的实例化交予spring来管理,让spring来帮我们实例化对象,我们只要修改一些配置文件就可以达到修改程序的功能的目的,而不再需要去改动源代码。IOC思想的底层就是依靠反射+工厂+配置文件。

spring的使用

spring要使用需要导入spring需要的jar包,同时需要在工程的src目录底下创建一个xml的配置文件,文件名可以随意起。

  • spring需要导入的基本包
    Spring学习笔记一(IOC思想)_第2张图片
  • 通过配置文件实例化对象的三种方式




	
	
	
	
	
	
	
	
	
	
	
	

  • spring的API使用
@Test
	public void test1() {
		//加载配置文件,ClassPathXmlApplicationContext为加载类路径classes目录下的配置文件
		//new FileSystemXmlApplicationContext()为加载主机磁盘目录下的配置文件
		//因此配置文件要放在工程的src目录底下,配置文件的名字可以随意取
		//ApplicationContext是接口,体现多态
		ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
		//获取spring为我们创建的对象实例,参数为在配置文件中bean标签的id值
		//获取哪个对象就传入哪个Id值
		Student student = (Student) context.getBean("stu");
		Student student1 = (Student) context.getBean("stu");
		System.out.println(student);
	}
  • spring依赖注入的使用




	
	 
	 
	 

	
	
	
	
	
	 
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
		
			
				小明
			
		
	


  • 其他javabean
package com.wzm.entity;

import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Properties;


/*
 * student
 */
public class Student {
	private String name;
	private Teacher teacher;
	private String[] s;
	private List l;
	private Map m;
	private Properties p;

	public Student(){
		System.out.println("我被创建了");
	}
	
	public Student(String name) {
		this.name = name;
	}

//省略getter和setter

	@Override
	public String toString() {
		return "Student [name=" + name + ", teacher=" + teacher + ", s=" + Arrays.toString(s) + ", l=" + l + ", m=" + m
				+ ", p=" + p + "]";
	}
}

package com.wzm.factory;

import com.wzm.entity.Student;

/*
 * 静态工厂类
 */
public class StudentStaticFactory {
	
	public static Student getStudent() {
		return new Student();
	}
}

package com.wzm.factory;

import com.wzm.entity.Student;

/*
 * 工厂类
 */
public class StudentFactory {
	
	public Student getStudent() {
		return new Student();
	}
}

package com.wzm.entity;

/*
 * 老师类
 */
public class Teacher {
	private String name;
//省略getter和setter
	@Override
	public String toString() {
		return "Teacher [name=" + name + "]";
	}
}

你可能感兴趣的:(Spring框架学习笔记)