Spring入门

什么是spring?
Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用 。
spring容器架构图
Spring入门_第1张图片
什么是控制反转(IOC)或依赖注入(DI)
控制反转:当我们调用一个方法或者类时,不再由我们自己创建类的对象,而是把控制权交给别人.
依赖注入:spring主动创建被调用类的对象,然后把这个对象注入到我们自己的类中,使得我们可以使用它。
总体来说将以前由程序员实例化对象/赋值的工作交给了spring处理
下面我们用简单的利用梳理对比spring的方便与快捷
创建一个UserBiz接口

public interface UserBiz {
	
	//上传文件
	public void upload();

}

创建UserBizImplOne类

public class UserBizImplOne implements UserBiz {

	@Override
	public void upload() {
//		System.out.println("实现图片上传的功能");
//		System.out.println("利用缓存流/缓存区实现上传图片");
		
		System.out.println("实现图片上传的功能");
	}

}

创建UserBizImplTwo类

public class UserBizImplTwo implements UserBiz {

	@Override
	public void upload() {
		System.out.println("利用缓存流/缓存区实现上传图片");
	}

}

创建UserAction类直接调用

public class UserAction {
	//private UserBiz userBiz = new UserBizImplOne();
	 private UserBiz userBiz = new UserBizImplTwo();
	public void upload(){
	this.userBiz.upload();
}

}

创建text类

public class IocTest {
	
	
	@SuppressWarnings("resource")
	public static void main(String[] args) {
//		
		UserAction userAction = new UserAction();
		userAction.upload();

	}

}

通过IOC方式来调用实现类的方法
创建UserBiz接口

/**
 * IOC 特性 反转控制
 * @author Administrator
 *
 */
public interface UserBiz {
	
	//实现图片上传
	public void upload();

}

通过IOC调用

public class UserAction {
	private UserBiz userBiz;

	 public UserBiz getUserBiz() {
		return userBiz;
	}

	public void setUserBiz(UserBiz userBiz) {
		this.userBiz = userBiz;
	}

	public void upload() {

		this.userBiz.upload();
	}

}

创建springbeans

	
	
	
	
	
		
    	
	

创建Test类

public class IocTest {
	
	
	@SuppressWarnings("resource")
	public static void main(String[] args) {	
		
		//获取spring上下文(建模)
		System.out.println("=================IOC特性");
		ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-context.xml");
		UserAction userAction = (UserAction) applicationContext.getBean("userAction");
		userAction.upload();
	}

}

IOC注入的两种方式
set注入和构造器注入
set注入
创建StudentAction类

public class StudentAction {
	
	private int sid;
	
	private String sname;
	
	private List hobbies;

	public int getSid() {
		return sid;
	}
	
	public void setSid(int sid) {
		this.sid = sid;
	}

	public String getSname() {
		return sname;
	}

	public void setSname(String sname) {
		this.sname = sname;
	}

	public List getHobbies() {
		return hobbies;
	}


	public void setHobbies(List hobbies) {
		this.hobbies = hobbies;
	}
	
	
	public void run() {
		System.out.println(this.sid+"--"+this.sname+"---"+this.hobbies);
	}
}

创建springbeans


	
	
 		
		 
		
			
				篮球
				足球
				羽毛球
			
		
	
	

创建test类

//注入方式 set方式 构造器
		System.out.println("================IOC注入方式");
		// Invalid property 'sid' of bean class [com.zking.services.web.StudentAction]: Bean property 'sid' is not writable or has an invalid setter method.
		//Does the parameter type of the setter match the return type of the getter?
		//当属性值没有提供setter 和 getter方法时 会报错 
		//解决方法 : 提供setter and getter方法
		StudentAction studentAction = (StudentAction) applicationContext.getBean("stuAction");
		studentAction.run();

构造器注入:同理 把上面StudentAction类的setter和getter方式去除,提供有参数和无参数构造器
创建springbeans


		
	
	
		
			
				篮球
				足球
				羽毛球
			
		
	

测试类如同上set注入的测试列即可’

你可能感兴趣的:(学习,环境搭建)