spring(一)

2014-11-24 00:41:54 · 作者: · 浏览: 3

spring框架

Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的 JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性的角度而言,绝大部分Java应用都可以从Spring中受益。 ◆目的:解决企业应用开发的复杂性 ◆功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能 ◆范围:任何Java应用 Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架。
例1:反向生成spring hello.java
package bean;

public class Hello {
    private String message;

	public String getMessage() {
		return message;
	}

	public void setMessage(String message) {
		this.message = message;
	}
    public String sayHello(){
    	return "Hello!"+message;
    }
}

applicationContext.xml(生成spring的XML文件),把hello.java添加到xml
  

  

     
    
     
   

  

测试Test.java
package test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import bean.Hello;

public class Test {
	public static void main(String[] args) {
		/**
		 * application context构造器通常使用字符串或字符串数组作为资源
		 * (比如组成context定义 的XML文件)的定位路径。
		 */
		ApplicationContext context = new ClassPathXmlApplicationContext(
				"applicationContext.xml");
		Hello hello = (Hello) context.getBean("hello1");//去找xml文件中bean的name
		System.out.println(hello.sayHello());
	}
}

\
例2: 加spring的jar包: \

接口InK.java
package bean;

public interface InK {
	   //设定墨水颜色
       public String getColer();
}

接口Paper.java
package bean;

public interface Paper {
	   //设定尺寸
       public String getSize();
       //纸张的厂商
       public String getPub();
}

继承接口的类
package bean;

public class A4Paper implements Paper{
    


	@Override
	public String getSize() {
		// TODO Auto-generated method stub
		return "A4";
	}

	@Override
	public String getPub() {
		// TODO Auto-generated method stub
		return "csdn";
	}
   
}

package bean;

public class B5Paper implements Paper{
    


	@Override
	public String getSize() {
		// TODO Auto-generated method stub
		return "B5";
	}

	@Override
	public String getPub() {
		// TODO Auto-generated method stub
		return "java";
	}
   
}

package bean;

public class BlackInk implements InK{
    

	@Override
	public String getColer() {
		
		return "caise墨水";
	}
   
}

package bean;

public class ColorInk implements InK{
    

	@Override
	public String getColer() {
		
		return "黑白墨水";
	}
   
}

Printer.java
package bean;

public class Printer {
     private InK inK;
     private Paper paper;
     
     private float price;
 
     //打印方法
     public void print(String str){
    	 System.out.println("用这个颜色的墨水"+inK.getColer());
    	 System.out.println("用那个厂商尺寸的纸"+paper.getSize());
    	 System.out.println("用那个厂商的纸"+paper.getPub());
    	 System.out.println(str);
     }
     //注入方式3中
     //1.构造函数   参数生命周期等同对象的声明周期

	public Printer() {
		super();
		// TODO Auto-generated constructor stub
	}

	public Printer(InK inK, Paper paper,float price) {
		super();
		this.inK = inK;
		this.paper = paper;
 		this.price=price;//******通过基本数据类型,注入price*******必须写在构造方法中
	}
     
	//2.通过一般方法注入,导致参数设定受限制
    public void init(InK inK, Paper paper) {
 		this.inK = inK;
 		this.paper = paper;

 	}

    
    //3.set get使用灵活,但是繁琐
	public InK getInK() {
		return inK;
	}

	public void setInK(InK inK) {
		this.inK = inK;
	}

	public Paper getPaper() {
		return paper;
	}

	public void setPaper(Paper paper) {
		this.paper = paper;
	}
     
    
   
    
}

分别测试输出这三种方法
/*
		 * InK ink = new ColorInk(); Paper paper = new B5Paper(); //1. //Printer
		 * print = new Printer(ink, paper); //print.print("打印机测试");