课后作业
使用Spring的IoC、DI 装配一台打印机
纸张接口
实现 有: A4 A5
墨盒接口
实现 有:黑白 彩色
注解方式和非注解方式都要
说明:
1.首先是注解方式,下面那些代码就是用注解方式做的,注解方式就是在那个定义属性和方法的那个类上面添加注解:@Component("computer"),这个computer就是填写当前所在的类,然后在每一个属性前面加@Autowired,属性是是私有的,然后用类或接口来做对象,例如private Paper paper;然后当前类要写get/set方法和构造方法(有参无参都要),然后还要在写一个打印出内容的方法,可以自己随便命名,然后方法内要调用对象(paper)点方法名, 由多少个属性,就要写多少个对象点方法名,因为属性的类型是类名。然后方法的实现类,不是接口,如果有接口,接口里面写的是抽象方法,要在具体实现这个方法的类中的类名声明前面添加@Component,如果有多个类实现了这个接口,就只用在一个实现了中写@Component,不然会报错found 2.
2.测试类中ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");为固定写法,applicationContext可以自己起名字。Printer print=(Printer) applicationContext.getBean("printer");这个printer是那个创建属性和方法的类名。print.printCosole(); 调用打印的方法。 测试类基本比较固定,基本不用改什么。
3.applicationContext.xml,如果用注解就要看一下那个最前面那些文件,因为用注解的话是要添加一些东西的,不过都已经封装好了的,直接用就可以,而且封装好的这个xml也可以用于不注解的。
注解和不注解的区别:
注解的话就是要:指定存在需要被扫描的类对应包 ->告诉Spring 容器你可以在哪个包中找到被Spring注解标,也就是写get/set和构造方法的那个类所在的包。这句话放到没有注解里面也没事,不会有什么影响。因为它只是扫描一下包名而已,对于不注解的可有可无,但是注解的一定要有
不注解的话:就是把上面那些@Component,@Autowried全部去掉,一般来说都是先写无注解然后在写有注解的。无注解一共分三种。
生成Referenced Libraries的操作方法
创建config的方法
代码:
package cn.yueqian.pojo;
import org.springframework.stereotype.Component;
public class A4Paper implements Paper {@Override
public String getSize() {// TODO Auto-generated method stub
return "A4";
}
}
package cn.yueqian.pojo;
import org.springframework.stereotype.Component;
@Component
public class A5Paper implements Paper {@Override
public String getSize() {// TODO Auto-generated method stub
return "A5";
}
}
package cn.yueqian.pojo;
import org.springframework.stereotype.Component;
public class ColorInk implements Ink{@Override
public String getColor() {// TODO Auto-generated method stub
return "彩色";
}
}
package cn.yueqian.pojo;
import org.springframework.stereotype.Component;
@Component
public class GrayInk implements Ink{@Override
public String getColor() {// TODO Auto-generated method stub
return "黑白";
}
}
package cn.yueqian.pojo;
import org.springframework.stereotype.Component;
public interface Ink {public String getColor();
}
package cn.yueqian.pojo;
import org.springframework.stereotype.Component;
public interface Paper {public String getSize();
}
package cn.yueqian.pojo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component("printer")
public class Printer {@Autowired
private Paper paper;
@Autowired
private Ink ink;
public Printer() {super();
// TODO Auto-generated constructor stub
}
public Printer(Paper paper, Ink ink) {super();
this.paper = paper;
this.ink = ink;
}
public Paper getPaper() {return paper;
}
public void setPaper(Paper paper) {this.paper = paper;
}
public Ink getInk() {return ink;
}
public void setInk(Ink ink) {this.ink = ink;
}
public void printCosole() {System.out.println("正在使用:"+ink.getColor()+"黑盒和:"+paper.getSize()+"纸张打印内容");
}
}
package cn.yueqian.test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import cn.yueqian.pojo.Computer;
import cn.yueqian.pojo.Person;
import cn.yueqian.pojo.Printer;
public class Test {public static void main(String[] args) {// ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
// Person p = (Person)context.getBean("person");
// p.method();
//
//
//
// Computer computer =(Computer) context.getBean("computer");
// computer.run();
//
// Computer com1 =(Computer) context.getBean("conputer");
// Computer com2 =(Computer) context.getBean("conputer");
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
Printer print=(Printer) applicationContext.getBean("printer");
print.printCosole();
}
}
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧