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();
}
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("打印机测试");